説明
まず、 のcounter
各反復で 0 に等しくなるように初期化しましたfor loop
。これにより、毎回リセットされます。それはあなたが望むものではありません。上部( の前)で 1 回実行しますfor loop
。
次に、すべての行のすべての列を繰り返し処理し、そのように「真」の数を数えるためにネスト する必要があります。for loop
第三に、次の理由により、比較ステートメントif(SignalMap = true)
は正しくありません。
- 2D 配列を扱っているため、行列内の位置を指定する必要があります。そう
SignalMap
でなければならないSignalMap[rowPosition][columnPosition]
SignalMap = true
に等しく設定してtrue
いますが、これはできません。であるか 比較したいtrue
ので、 と書くべきSignalMap == true
です。
booleans
最後に、格納されるfalse の数はtrue booleans
、行のサイズから を引いた数に列のサイズを掛けた値になります。これはrowSize
、列の数があり、各列に があるためですcolSize
booleans
。したがって、それらを乗算して、2D 配列内のブール値の総数を取得します。
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ __ _ _ __ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ___
コード
boolean[][] SignalMap = new boolean[rowSize][colSize];
int counter = 0; // initialize before the for loops
for(int r = 0; r < rowSize; r++) { // loop for rows
for (int c = 0; c < colSize; c++) { // nested loop for columns
if (SignalMap[r][c]) // if array boolean at r and c position is true...
counter++; // add one to the counter
}
}
System.out.println("true: " + counter)
System.out.println("false: " + (rowSize * colSize - counter));
// total number of booleans in array is rowSize * colSize
// and total # of false booleans is total # of booleans - # of true booleans