解释
首先,您counter
在 的每次迭代中初始化为等于 0 for loop
,这将每次都将其重置。那不是你想要的;在顶部执行一次(在之前for loop
)。
其次,您需要有一个嵌套 for loop
来遍历每一行中的每一列,然后像这样计算“真”的数量。
第三,您的比较陈述if(SignalMap = true)
不正确,因为:
- 你正在处理一个二维数组,所以你需要在矩阵中指定位置。所以
SignalMap
必须是SignalMap[rowPosition][columnPosition]
SignalMap = true
将其设置为true
,这是您无法做到的。你想比较一下是不是 true
,所以你应该写SignalMap == true
。
最后,假booleans
存储的数量将是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