Подскажите, что может не нравиться валидатору, что он даже не отвечает нормально?)
Запускаю задачу - вроде работает, а валидатор - вылетает окошко с ошибкой. Что я мог "накуралесить"?
Кстати, потоки я запускаю в конструкторе. Если не прописать join(), то вместо самого частого байта добавляет null...
package com.javarush.task.task18.task1823;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/*
Нити и байты
*/
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<>();
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName;
while(!(fileName = reader.readLine()).equals("exit")){
resultMap.put(fileName, null);
}
for(Map.Entry<String, Integer> pair : resultMap.entrySet()){
String d = String.valueOf(pair.getKey());
new ReadThread(pair.getKey());
}
for(Map.Entry<String, Integer> pair : resultMap.entrySet()){
System.out.println(pair.getKey() + " " + pair.getValue());
}
}
public static class ReadThread extends Thread {
public ReadThread(String fileName) throws InterruptedException {
//implement constructor body
super(fileName);
start();
join();
}
// implement file reading here - реализуйте чтение из файла тут
@Override
public void run() {
int [] chars = new int[256];
int maxFrq = 0;
int symbol = 0;
try (FileInputStream fis = new FileInputStream(this.getName())){
while (fis.available()>0){
chars[fis.read()]++;
}
} catch (IOException e) {
e.printStackTrace();
}
//записали кол-во повторений в chars
for(int i = 0; i < chars.length; i++){
if(chars[i] > maxFrq){
maxFrq = chars[i];
symbol = i;
}
}
//нашли максимально встречающийся символ
for(Map.Entry<String, Integer> pair : resultMap.entrySet()){
resultMap.put(String.valueOf(this.getName()), symbol);
}
//закрываем нить
Thread.currentThread().interrupt();
}
}
}