Я пишу программу для удаления последовательных символов повторяющихся в строке, используя ниже программы:Хотя цикл с булевым не завершением
static void main(String[] args){
String s = "abcdeedcbfgf";
removeConsecutiveDuplicate(s);
}
static void removeConsecutiveDuplicate(String s) {
String tmp = "";
boolean isEligible = false;
for (int i = 0; i < s.length() - 1; i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
tmp = s.substring(0, i) + s.substring((i + 2), s.length());
System.out.println(tmp);
s = tmp;
isEligible = true;
break;
}
}
System.out.println("s is:" + s);
while (isEligible)
removeConsecutiveDuplicate(s);
}
Вывод должен быть: AFGF, когда нет последовательных символов и он должен остановитесь, пока я использую флаг. Но флаг получает истинную ценность.
Я не знаю, как это делается?
Может ли кто-нибудь помочь мне понять, где я делаю что-то неправильно?
Это потому, что 'isEligible' никогда не изменяет значение в фрейме, которое было объявлено первым. Как долго это будет продолжаться? потому что мне кажется, что вы в конечном итоге закончите кучу очень быстро – CraigR8806
i.e каждый раз, когда вы вызываете 'removeConsecutiveDuplicate()', вы создаете новую область и новое значение для 'isEligible'. Это новое значение будет ** НЕ ** возвращаться и не будет отображаться в вашем исходном цикле while – CraigR8806
Строка '' 'в' main() 'останется после вызова (когда вы сделаете ее по желанию и возвращение впоследствии). Я думаю, вы хотите, чтобы метод возвращал измененные '' 'вызывающему. –