让我们比较这两种方法...
案例一:功能正常
public void fooTestOk() {
boolean ret = true;
for (int i = 0; i < 10; i++) {
boolean r;
if (fooIf(i))
r = fooMethod(i);
else
r = fooMethod(i);
ret = ret && r;
}
System.out.println("ret "+ret);
}
输出
它给了我以下预期的输出(我已经删除了换行符):
0
1
2
3
4
5
6
7
8
9
ret false
案例 2:导致意外中断的函数
但是这个方法
public void fooTestFail() {
boolean ret = true;
for (int i = 0; i < 10; i++) {
if (fooIf(i))
ret = ret && fooMethod(i);
else
ret = ret && fooMethod(i);
}
System.out.println("ret "+ret);
}
输出
只给我这个输出,必须打破循环!没有例外!
0
ret false
谁能解释为什么在这种情况下循环被终止而没有任何错误?
其余代码
这是我的fooIf
和fooMethod
功能:
public boolean fooIf(int i) {
return i % 2 == 0;
}
public boolean fooMethod(int i) {
System.out.println(i);
return i == 5;
}