Помогите разобраться почему у меня очень все не очень с буквой "я".
Я попытался реализовать подсчет букв посредством сравнения упорядоченного списка с String (который раньше был массивом char , а до этого строкой вроде, я уже запутался) с ним самим же в поисках дубликатов (мне кажется счетчик со мной хитрит и ошибка в нем), чтобы потом засунуть это все в карту, но до этого не дошел.
Оставил комментарии в этом проклятом манускрипте для лучшего понимания этого древнегреческого.
Поставлю за вас свечку в храме если наставите на путь истинный..
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));
// Алфавит
String alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
// Алфавит в char
char[] abc = alphabet.toCharArray();
// Ввод строк
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String s = reader.readLine();
list.add(s.toLowerCase());
}
//вспомогательные списки
ArrayList<String> chars = new ArrayList<String>();
ArrayList<Integer> letters = new ArrayList<Integer>();
ArrayList<Integer> fix = new ArrayList<Integer>();
// Строки в char
for (int i = 0; i < list.size(); i++) {
char[] strings = list.get(i).toCharArray(); //строка в виде массива char
for (int j = 0; j < 33; j++){ //перебор алфивита
for (int k = 0; k < strings.length; k++){ //перебор чаров в массиве чар из строки
if (strings[k] == abc[j]){
String z = Character.toString(strings[k]);
chars.add(z); //получаем все чары в ArrayList в формате String
}
}
}
}
Collections.sort(chars); // cортировка массива из букв которые раньше были словами
System.out.println(chars); // вывод массива
// Карта
Map<String, Integer> map = new HashMap<String, Integer>();
int count = 1;
//Здесь я попытался пройти по массиву, посчитать сколько дубликатов и перед тем как
for(int i = 0; i < chars.size(); i++){
for (int j = i + 1; j < chars.size(); j++){
if (chars.get(i).equals(chars.get(j))){
//System.out.println("я сработал на i=" + i + " =" + chars.get(i) + " и на j=" + j + " = " + chars.get(j));
count = count + 1;
//System.out.println("каунт равен " + count);
}
else {
//System.out.println("я НЕ сработал на i=" + i + " =" + chars.get(i) + " и на j=" + j + " = " + chars.get(j));
fix.add(count);
i = i + count - 1;
count = 1;
break;
}
}
}
System.out.println(fix);
/*
//пройтись словами по списку букв, а не наоборот
for (int x = 0; x < list.size(); x++) {
char[] strings = list.get(x).toCharArray();
for (int i = 0; i < abc.length-1; i++){
for (int j = 0; j < strings.length; j++){
if (strings[j] == abc[i]){
count = count + 1;
}
else {
//System.out.println("я НЕ сработал на i=" + i + " =" + chars.get(i) + " и на j=" + j + " = " + chars.get(j));
fix.add(count);
i = i + count - 1;
count = 1;
break;
}
}
}
}
*/
}
}