Работа с двумерным массивом символов
Нужна помощь с заданием, есть массив:
char[][] tab = {
{'S', 'a', 'm', 's', 'u', 'n', 'g'},
{'N', 'o', 'k', 'i', 'a'},
{'A', 'p', 'p', 'l', 'e'},
{'B', 'l', 'a', 'c', 'k', 'B', 'e', 'r', 'r', 'y'},
{'A', 'l', 'c', 'a', 't', 'e', 'l'},
{'S', 'o', 'n', 'y'},
{'J', 'o', 'l', 'l', 'a'},
};
Нужно проверить, повторяются ли в каждом отдельном названии хотя бы 2 буквы (вне зависимости от их регистра). Я написал такой цикл:
for (int i = 0; i < tab.length; i++){
for (int j = 0; j < tab[i].length - 1; j++){
if (tab[i][j] == tab[i][j+1]){
System.out.println(tab[i][j] + " из " + i + " названия повторяются.");
}
}
}
Как результат получил:
pиз 2 названия повторяются.rиз 3 названия повторяются.lиз 6 названия повторяются.
Как мне изменить мой код, чтобы учитывались буквы верхнего регистра?
Ответы (1 шт):
Автор решения: Anton Shchyrov
→ Ссылка
Перевести все в один регистр, а потом сравнивать.
Или банально
if (Character.toLowerCase(tab[i][j]) == Character.toLowerCase(tab[i][j+1])){
или с извращениями
for (int i = 0; i < tab.length; i++){
if (tab[i].length >= 2) {
char prev = Character.toLowerCase(tab[i][0]);
for (int j = 1; j < tab[i].length; j++){
char cur = Character.toLowerCase(tab[i][j]);
if (prev == cur){
System.out.println(cur + " из " + i + " названия повторяются.");
}
prev = cur;
}
}
}