нужно вывести только Максимально повторяющиеся байты?
короче вот что у меня выводит, тестил несколько раз все верно, и какое количество повторов нужно валидатору?
вот что выводит в консоль
>239:187:191:97:97:97:97:97:98:98:98:98:98:99:99:99:99:99: (это для наглядности вывожу список, записанных в массив байтов)
>номер Байта 97: кол-во повторов 6
>номер Байта 98: кол-во повторов 6
>номер Байта 99: кол-во повторов 6
>номер Байта 187: кол-во повторов 1
>номер Байта 239: кол-во повторов 1
>номер Байта 191: кол-во повторов 1
(это мап, с кол-вом повторений)
97 98 99
(вот итоговый вариант, вывожу на экран, только повторяющиеся байты, т.е. те кто повторяются больше двух раз )
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.HashMap;
import java.util.List;
import java.util.Map;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream in = new FileInputStream(reader.readLine());
int count=1;
HashMap<Integer,Integer> countrepeat = new HashMap<Integer,Integer>(); //создаю мап для байтов, где значению ключа это байт(уникальное значение)
ArrayList<Integer> byteList = new ArrayList<>(); //массив для считаных байтов
while(in.available()>0){
int x = in.read();
//System.out.print(x+":");
byteList.add(x); // добавление байтов в массиво
countrepeat.put(x,count); // добавление всех байтов в мап, со занчением value(кол-во повторений)
}
int nol=0; // значение для цикла for, для исключения повтора значений при переборе значений в мапе
for(Map.Entry<Integer,Integer> pair:countrepeat.entrySet()){
int x = pair.getKey();
nol++;
if(x==10||x==13) continue; // если пропускаю переносы на новую строку
for(int i=nol;i<byteList.size();i++){
if(x==byteList.get(i)){
count++; // считаю повторы
}
}
countrepeat.put(x,count);// обновляю значение повторов для каждого байта
count=1; // обнуляю счетчик
}
for(Map.Entry<Integer,Integer> pair:countrepeat.entrySet()){
int x = pair.getKey();
int y = pair.getValue();
if(y!=1){
System.out.print(x+" ");// вывожу только те байты которые встречаюся в файле больше 1 раза, кроме байта 10 и 13
}
//System.out.println("номер Байта "+x+": кол-во повторов "+y);
}
in.close();
}
}