Я ненавижу это решение, но, думаю, вы используете char [] из-за потребностей. Если не обязательно, я бы порекомендовал вам использовать StringBuilder
, как предложил Лино.
char blankChar = " ".charAt(0);
if (stringInput == null || "".equals(stringInput)) {
System.out.println("Empty input");
}
char[] ch = stringInput.toCharArray();
char lastChar = ch[0];
int numAppearanceslastChar = 0;
for (char element : ch) {
if (element == blankChar) {
continue;
}
if (lastChar == element) {
numAppearanceslastChar++;
} else {
System.out.print(lastChar+""+numAppearanceslastChar+" ");
lastChar = element;
numAppearanceslastChar = 1;
}
}
System.out.println(lastChar+""+numAppearanceslastChar+" ");
Вывод: H1 e1 l2 o1 w1 o1 r1 l1 d1
Объяснение: Прочитайте все слово только один раз (обратите внимание, что вы делали 3 раза цикл for) и сравните последний прочитанный символ с новым. Если они совпадают, увеличьте количество вхождений этого символа. Если это не так, то вы распечатываете их и устанавливаете новый символ как последний прочитанный.
Когда вы закончите читать слово, напечатайте последний прочитанный символ.
Всегда помни, чтобы все было просто! И продезинфицировать (вы получите nullPointer в этом коде, если получите null или empty, просто напишите его там, чтобы указать на это).