Вместо try-catch-finally использовал выбрасывание исключения в сигнатуре метода. В обоях случаях, при валидации, на против 2 и 5 условия задачи вырисовывался красный круг с крестиком внутри и заключение о том что задача не прошла тестирование.
Думаю что я не совсем правильно понял условие "Программа запускается с одним параметром - именем файла".т.е. args[0] или имя файла разбито на args[0], args[1] ?
package com.javarush.task.task18.task1821;
/*
Встречаемость символов
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) {
FileInputStream inputStream = null;
ArrayList<Integer> list = new ArrayList<>();
try {
int i;
inputStream = new FileInputStream(args[0]);
while ((i=inputStream.read())!=-1){
list.add(i);
}
Collections.sort(list);
int count = 1;
for (int j =1; j<list.size();j++) {
if (list.get(j - 1) == list.get(j)) {
count++;
} else {
int s = list.get(j - 1);
System.out.println((char) s + " " + count);
count = 1;
}
}
int l = list.get(list.size()-1);
System.out.println((char)l+" "+count);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}