Подскажите, где бы мог напортачить?
Попробовал решить задачу с файлом на компьютере - как итог выводит разные цифры. (Хотя в файле буквы повторяются)...
Вроде как по коду все максимально логично и должно работать.
package com.javarush.task.task18.task1803;
/*
Самые частые байты
*/
import java.io.*;
import java.util.*;
public class Solution {
public static int count = 0;
/*
Самые частые байты
Ввести с консоли имя файла.
Найти байт или байты с максимальным количеством повторов.
Вывести их на экран через пробел.
Закрыть поток ввода-вывода.
Требования:
1. Программа должна считывать имя файла с консоли.
2. Для чтения из файла используй поток FileInputStream.
3. В консоль через пробел должны выводиться все байты из файла с максимальным количеством повторов.
4. Данные в консоль должны выводится в одну строку.
5. Поток чтения из файла должен быть закрыт.
*/
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
List<Integer> ints = new ArrayList<>();
FileInputStream fileInputStream = new FileInputStream(fileName);
while(fileInputStream.available()>0){
int s = fileInputStream.read();
ints.add(s);
}
fileInputStream.close();
Collections.sort(ints);
HashMap<Integer,Integer> hashMap = new HashMap<>();
for(int i = 0; i < ints.size()-1; i++){
if(ints.get(i)==ints.get(i+1)){
count++; //1, 2 ,3 ,4
}
else{
hashMap.put(ints.get(i),count);
count = 0;
}
}
ArrayList<Integer> repeats = new ArrayList<>(hashMap.values());
int maxValue = Collections.max(repeats);
ArrayList<Integer> bytes = new ArrayList<>();
for(Map.Entry<Integer,Integer> integer : hashMap.entrySet()){
if(integer.getValue()==maxValue){
bytes.add(integer.getKey());
}
}
for(Integer nums : bytes){
System.out.print(nums + " ");
}
}
}