Вот реализация алгоритма:
HashMap<Character,Integer> map = new HashMap<>();
for(Character ch : alphabet){
map.put(ch,0);
}
for(String st : list){
for(Character ch : st.toCharArray()){
Integer count=map.get(ch)+1;
map.replace(ch,count);
}
}
for(Character ch : alphabet ){
System.out.println(ch+" "+map.get(ch));
}
вывод верный,но решение не проходит.
В чем причина?
package com.javarush.task.task10.task1012;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
/*
Количество букв
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// Алфавит
List<Character> alphabet = Arrays.asList(
'а','б','в','г','д','е','ё','ж',
'з','и','й','к','л','м','н','о',
'п','р','с','т','у','ф','х','ц',
'ч','ш','щ','ъ','ы','ь','э','ю','я');
// Ввод строк
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String s = reader.readLine();
list.add(s.toLowerCase());
}
// напишите тут ваш код
HashMap<Character,Integer> map = new HashMap<>();
for(Character ch : alphabet){
map.put(ch,0);
}
for(String st : list){
for(Character ch : st.toCharArray()){
Integer count=map.get(ch)+1;
map.replace(ch,count);
}
}
for(Character ch : alphabet ){
System.out.println(ch+" "+map.get(ch));
}
}
}
Попробуй без toLowerCase()UPD Проблема в том, что если в строке окажутся другие символы (пробелы хотя бы), у тебя будет NPE вот тут: