4
函數countHi計算給定字符串中「hi」的數量。如果用「abc hi ho」作爲參數調用countHi,則i在循環之前首先設置爲4。我在第一個循環內重置爲-1。第1次循環後,條件(i!= -1)爲假,整個條件語句爲假。我期望例程會退出循環,但它不會,我不明白爲什麼。爲什麼Java For條件語句似乎被忽略?
public static int countHi(String str) {
int cnt = 0;
int i = str.indexOf("hi");
for (; (i < str.length()) && (i != -1); i++) {
cnt++;
i = str.indexOf("hi", i + 1);
}
return cnt;
}
在接下來的版本中,條件正確退出循環:
for (; i!=-1;) {
cnt++;
i = str.indexOf("hi", i + 1);
}
版本更經濟,但是這將是很好理解爲什麼第一個版本產生了意想不到的結果。