Вот фрагмент кода одного из моих классов:
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 значение true, только если флаги четырех соответствующих объектов на следующем уровне массива также имеют значение true. К сожалению, у меня, похоже, проблемы с этим:
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, которое я должен был получить); Вы не можете сделать несколько вызовов функций в операторе if в Java? или я делаю это неправильно?
(Кстати, извините за форматирование; я впервые здесь пишу)