По мне так ответ вроде правильный, ну валидатор не принимает ответ.
package com.javarush.task.task18.task1803;
import javax.print.attribute.standard.Finishings;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
/*
Самые частые байты
Самые частые байты
Ввести с консоли имя файла.
Найти байт или байты с максимальным количеством повторов.
Вывести их на экран через пробел.
Закрыть поток ввода-вывода.
Требования:
1. Программа должна считывать имя файла с консоли.
2. Для чтения из файла используй поток FileInputStream.
3. В консоль через пробел должны выводиться все байты из файла с максимальным количеством повторов.
4. Данные в консоль должны выводится в одну строку.
5. Поток чтения из файла должен быть закрыт.*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();
FileInputStream input = new FileInputStream(filename);
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> listb = new ArrayList<Integer>();
ArrayList<Integer> listmax = new ArrayList<Integer>();
int data;
int count = 1;
while (input.available() > 0) {
data = input.read();
list.add(data);
}
input.close();
Collections.sort(list);
int max=0;
int tmp;
for (int i=0; i<list.size()-1; i++) {
if (list.get(i)==list.get(i+1)) {
count++;
}
else {
tmp = count;
if (tmp >= max){
max=tmp;
listmax.add(max);
listb.add(list.get(i));}
count = 1;
}
}
for (int i=0; i<listb.size(); i++){
if (listmax.get(i)==max){
System.out.print(" " + listb.get(i));
}
}
/*System.out.println(listmax.size());
System.out.println(listb.size());*/
}
}