我寫一個程序使用以下程序在一個字符串去除連續重複字符:循環和布爾沒有終止
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
即每次調用removeConsecutiveDuplicate()時,都會爲'isEligible'生成一個新的作用域和一個新的值。這個新值將不會傳回,也不會在初始while循環中顯示 – CraigR8806
main()中的字符串's'在調用後將保持不變(當您按照需要進行操作時之後返回)。我想你會希望這個方法將修改後的's'返回給調用者。 –