Сопсна как у всех - работает верно, вывод закомментирован, а Валидатор выдает:
Затем нити должны найти максимально встречающийся байт в своем файле и добавить его в словарь resultMap.
рекомендации от ментора:
Программа вывела в консоль (на экран) слишком много данных.
package com.javarush.task.task18.task1823;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/*
Читайте с консоли имена файлов, пока не будет введено слово "exit".
Передайте имя файла в нить ReadThread.
Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap,
где параметр String - это имя файла, параметр Integer - это искомый байт.
Закрыть потоки.
Требования:
1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "exit".
2. Для каждого файла создай нить ReadThread и запусти ее.
3. После запуска каждая нить ReadThread должна создать свой поток для чтения из файла.
4. Затем нити должны найти максимально встречающийся байт в своем файле и добавить его в словарь resultMap.
5. Поток для чтения из файла в каждой нити должен быть закрыт.
*/
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s;
while (!(s = reader.readLine()).equals("exit") ) {
new ReadThread(s);
}
//for (Map.Entry<String, Integer> element:resultMap.entrySet()) {
// System.out.println(element.getKey() + " " + element.getValue());
//}
}
public static class ReadThread extends Thread {
FileInputStream stream1;
String fileName;
public ReadThread(String fileName) throws FileNotFoundException {
//super(fileName);
stream1 = new FileInputStream(fileName);
this.fileName = fileName;
this.start();
}
@Override
public void run() {
int[] array = new int[256];
while (true) { /// читаем регулярность встречаемости байтов в соответствующий массив
int byt = 0;
try {
if (!(stream1.available()>0)) break;
byt = stream1.read();
} catch (IOException e) {
e.printStackTrace();
}
array[byt]++;
}
int Max = -1;
int Ch = -1;
for (int i = 0; i<256; i++) { //ищем максимально встречаемый байт
if (array[i]> Max) {
Ch = i;
Max = array[i];
}
}
resultMap.put(fileName, (int) Ch); // добавляем в массив
//System.out.println(fileName + " " + Ch);
try {
stream1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}