Почему цикл for внезапно останавливается при сравнении последних элементов - PullRequest
0 голосов
/ 23 октября 2019

РЕДАКТИРОВАТЬ: Проблема решена, прочитайте комментарии:)

В этой задаче я подсчитываю частоту буквы и добавляю их только с буквой и числом вхождений буквы в новую строку.

Я превратил код в массив символов, чтобы я мог манипулировать массивом и сравнивать значения. Он работает хорошо , пока не достигнет последних одинаковых элементов в конце массива. Проблема возникает в последних элементах сравнения .

Я написал такие коды, как:

if(i == letter.length-1) { 
    ... print ...
}

Это не решает проблему. Вот код:

public static void main(String[] args) {

    String letters = "aaabbcddeffgaaaa";
    String newStr = "";

    char[] letter = letters.toCharArray();

    int count = 1;

    for(int i=0; i<letter.length-1; i++) {

        if(letter[i] == letter[i+1]) {
            count++;
        }

        else if(letter[i] != letter[i+1]) {

            if(count > 1) {
                newStr += letter[i] + Integer.toString(count);
            }
            else {
                newStr += letter[i];
            }

            count = 1;
        }

        else {
            if(count > 1) {
                newStr += letter[i] + Integer.toString(count);
            }
            else {
                newStr += letter[i];
            }
        }

    }

    System.out.println(newStr);

}

Ожидаемый выход : a3b2cd2ef2ga4

Но вывод, который он дает: a3b2cd2ef2g

Он полностью отсутствуетa4, хотя цикл повторяет их!

...