这是我的一个课程中的一段代码:
public void run() {
SomeClass[][] someClassArray = new SomeClass[6][];
someClassArray[0] = new SomeClass[1];
someClassArray[1] = new SomeClass[4];
someClassArray[2] = new SomeClass[16];
someClassArray[3] = new SomeClass[64];
someClassArray[4] = new SomeClass[256];
someClassArray[5] = new SomeClass[1024];
someFunction(0,0);
}
someFunction(int i, int j) {
if(i == 5) {
someClassArray[i][j].flag = test(i,j); // BASE CASE
}
else {
if(someFunction(someClassArray(i+1,j*4))
&& someFunction(someClassArray(i+1,j*4+1))
&& someFunction(someClassArray(i+1,j*4+2))
&& someFunction(someClassArray(i+1,j*4+3)))
someClassArray[i][j].flag = true;
else
someClassArray[i][j].flag = false;
}
return someClassArray[i][j].flag;
}
class SomeClass {
boolean flag;
// other stuff
}
boolean test(int i, int j) {
// test some property of this coordinate
}
本质上,我想要的是仅当下一个数组级别中的四个相应对象的标志也为真时,才将一个 SomeClass 对象的标志设置为真。不幸的是,我似乎遇到了这个问题:
if(someFunction(someClassArray(i+1,j*4))
&& someFunction(someClassArray(i+1,j*4+1))
&& someFunction(someClassArray(i+1,j*4+2))
&& someFunction(someClassArray(i+1,j*4+3)))
看起来它只是检查第一个条件(我在计数器中添加了所以检查 someFunction 被调用了多少次,它只上升到 6,而不是我应该得到的 1365);您不能在 Java 中的 if 语句中执行多个函数调用吗?还是我做错了?
(顺便说一下格式,这是我第一次在这里发帖)