これが私のクラスの1つからのコードのセクションです:
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
}
基本的に、次の配列レベルの 4 つの対応するオブジェクトのフラグも true である場合にのみ、1 つの SomeClass オブジェクトのフラグを 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 が呼び出された回数を確認すると、取得する必要がある 1365 ではなく、6 までしか上がりませんでした); Java の if ステートメントで複数の関数呼び出しを行うことはできませんか? または私はそれを間違っていますか?
(ちなみにフォーマットについて申し訳ありません;これは私がここに投稿するのは初めてです)