gpt4 book ai didi

java - 为什么 Java For 条件语句似乎被忽略了?

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:09 24 4
gpt4 key购买 nike

函数 countHi 计算给定字符串中“hi”的数量。如果用“abc hi ho”作为参数调用 countHi,则在 for 循环之前首先将 i 设置为 4。我在第一个循环中重置为 -1。第一次循环后,条件 (i != -1) 为假,整个条件语句为假。我希望例程会退出循环,但它不会,而且我不明白为什么。

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);
}

修订更经济,但最好能理解为什么第一个版本会产生意想不到的结果。

最佳答案

i 可能从

变为 -1
i = str.indexOf("hi", i + 1);

但是

i++

for 循环中,更新表达式会在检查条件之前将其恢复为 0。

关于java - 为什么 Java For 条件语句似乎被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com