Суть проблемы такова,когда запускаю код,все вроде выставляется по алфавиту,но вот так:
//ввод пользователя с клавиатуры
код
решение
задача
помощь
ноутбук
непонтяно
джавараш
скидка
редактор
проблема
р:1
с:1
т:1
у:2
ч:1
ш:1
щ:1
ь:1
я:1
а:1
б:1
в:1
д:1
е:1
ж:1
з:1
и:1
к:1
л:1
м:1
н:3
о:1
п:1
Почему ему нравится такой порядок алфавита,и эти несколько букв
И так при разных словах,начинается с Р, и считает только некоторые символы
Уже три дня сижу с этой задачей,буду рад любому совету
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));
Map<Character, Integer> resultIteration = new HashMap<Character, Integer>();
// Алфавит
List<Character> alphabet = Arrays.asList(
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж',
'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц',
'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
// Ввод строк
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String line = reader.readLine();
list.add(line.toLowerCase());
}
//Разбитие на символы введенных пользователем строк
for (String symbolInputString : list) {
char[] symbol = symbolInputString.toCharArray();
//Разбор алфавита
for (Character symbolAlphabet : alphabet) {
//проходим циклом по массиву char,сравниваем с алфавитом
for (int i = 0; i < symbol.length; i++) {
if (symbol[i] == symbolAlphabet) {
//создаем char C который в дальнейшем будем
// использовать для сравнения и подсчета количества
char c = symbol[i];
int count = 0;
//проходим еще раз по массиву и сравниваем символы
for (int j = 0; j < symbol.length; j++) {
if (c == symbol[j]) {
count++;
}
}
resultIteration.put(c, count);
}
}
}
}
for (Map.Entry<Character, Integer> item : resultIteration.entrySet()) {
System.out.println(item.getKey() + ":" + item.getValue());
}
}
}
Евгений Винников
12 уровень
Подскажите что не так
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Евгений Винников
13 декабря 2020, 16:10
Спасибо!
Я оказывается еще и условие неправильно понял)
а еще не подскажите,в связи с чем так получилось,что в выводе у меня посчитало лишь несколько символов,а остальные выдало как 1?
0
Павел Безумный учёный Expert
9 декабря 2020, 22:11
Ключи в отображении типа HashMap хранятся в порядке, определяемом алгоритмом хеширования. Это означает, что HashMap упорядочивает ключи "удобным" для себя образом, не соблюдая в данном случае алфавитный порядок символов. Для упорядоченного вывода содержимого отображения resultIteration можно воспользоваться итерацией по тому же списку alphabet.
По условию задачи требуется, чтобы в консоль выводились частоты встречаемости всех символов из списка alphabet, даже если символ отсутствует во в введённых строках, например:
Отображение resultIteration удобно изначально инициализировать парами-"пустышками":
+1