Друзья, в этой и любой другой задаче, где необходимо использовать аргументы командной строки, у меня возникает одна и та же проблема - они есть, но Idea считает, что я их не вводил. Если в программе где-либо задействовать аргументы командной строки, то при компиляции выбрасывается исключение ArrayIndexOutOfBoundsException. А если вывести в консоль длину массива args, то она всегда равняется нулю, хотя, повторюсь, аргументы в командной строке есть.
package com.javarush.task.task18.task1821;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) {
// try (FileReader fileReader = new FileReader("C:\\Users\\Егор\\Desktop\\Учебный файл1.txt"))
try (BufferedReader bf =
new BufferedReader(new FileReader(args[0]))) {
Map<Character, Integer> map = new TreeMap<>();
// int ch;
// while ((ch=fileReader.read())!=-1) {
// map.put((char) ch, ch);
// }
Map<Character, Integer> mapResult = new TreeMap<>();
// for (Character i : map.keySet()) {
// if(mapResult.)
// }
// String strRead = null;
StringBuilder builder = new StringBuilder();
String str = bf.readLine();
while (str != null){
builder.append(str);
str = bf.readLine();
}
for ( int i = 0; i < builder.length(); i++ ) {
Integer n = mapResult.get( builder.charAt(i) );
if ( n == null ) mapResult.put( builder.charAt(i), 1 );
else mapResult.put(builder.charAt(i), ++n );
}
for(Character c : mapResult.keySet()){
System.out.println(c +" "+ mapResult.get(c));
}
// 10 - \n
// 13 - \r
// 32 - space
} catch (IOException e) {
e.printStackTrace();
}
}
}