Валидатор пишет: "Ты выводишь все байты встречающиеся в файле, а нужно только байты с максимальным количеством повторов."
Хотя, программа работает правильно. Она выводит данные: -66 -78 -48.
А если я прошу вывести все ключи и значения, то получаю:
-66:131
49:75
50:120
-69:127
10:120
-78:131
13:120
-95:124
-48:131.
Т.е. именно эти байты -66 -78 -48 встречаются чаще всего.
package com.javarush.task.task18.task1803;
/*
Самые частые байты
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
FileInputStream fileReader = new FileInputStream(fileName);
ArrayList <Byte> allByte = new ArrayList<>();
HashMap<Byte, Integer> repeatedByte = new HashMap<>();
int countRepeat = 0;
while (fileReader.available()>0) {
byte nextByte = (byte) fileReader.read();
allByte.add(nextByte);
}
fileReader.close();
for (int i = 0; i < allByte.size()-1; i++){
for (int j = i+1; j < allByte.size(); j++){
if (allByte.get(i).equals(allByte.get(j))) {
countRepeat++;
}
if (countRepeat > 0) {
repeatedByte.put(allByte.get(i), countRepeat);
}
}
}
int maxValue = Collections.max(repeatedByte.values());
for (Map.Entry<Byte, Integer> pair : repeatedByte.entrySet()) {
if (pair.getValue().equals(maxValue)) {
System.out.print(pair.getKey() + " ");
}
}
}
}