Делала на основе int массива. Вывод следующий:
2
2
a 9
d 7
f 1
g 11
h 9
s 1
Верхние два - это перенос строки и пробел.
До этого выводила всю ASCII таблицу с частотой встречания символов, не проходил ещё четвёртый пункт. Добавила условие.
package com.javarush.task.task18.task1821;
/*
Встречаемость символов
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
public class Solution {
/**
*
* @param args first arg has a file name.
* */
public static void main(String[] args) {
try {
int[] byteCount = new int[256];
FileInputStream inStream = new FileInputStream(args[0]);
while (inStream.available() > 0) {
int byteRead = inStream.read();
byteCount[byteRead] = byteCount[byteRead] + 1;
}
//System.out.print(byteCount);
inStream.close();
for (int i = 0; i < 256; i++) {
if (byteCount[i] != 0)
System.out.println((char) i + " " + byteCount[i]);
}
} catch (IOException error) {
System.out.println(error.getMessage());
}
}
}