-1

我设置了一个布尔数组,我需要找出它存储了多少正确和错误......

    boolean[][] SignalMap = new boolean[Size][Size];

我该怎么做呢?

    for(int i = 0; i < Size; i++)
{
    int counter = 0;
            if(SignalMap = true)
            counter++;
    {
    System.out.println("true: " + counter)
    System.out.println("flase: " + (Size - counter));
4

4 回答 4

3

想查看单线解决方案吗?

int trueCount = Arrays.deepToString(SignalMap).replaceAll("[^t]", "").length();

错误的计数当然是恭维:

int falseCount = Size * Size - trueCount;
于 2013-11-04T02:34:10.123 回答
1

解释

首先,您counter在 的每次迭代中初始化为等于 0 for loop,这将每次都将其重置。那不是你想要的;在顶部执行一次(在之前for loop)。

其次,您需要有一个嵌套 for loop来遍历每一行中的每一列,然后像这样计算“真”的数量。

第三,您的比较陈述if(SignalMap = true)不正确,因为:

  1. 你正在处理一个二维数组,所以你需要在矩阵中指定位置。所以SignalMap必须是SignalMap[rowPosition][columnPosition]
  2. 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
于 2013-11-04T02:31:03.637 回答
0

由于这是 Java,因此您的变量应该是小写的。

boolean[][] signalMap = new boolean[size][size];

对于数组的每个维度,您都需要一个 for 循环。

这是编写双 for 循环的一种方法。计数器需要在 for 循环之外进行初始化。

        int counter = 0;
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                if (signalMap[i][j]) {
                    counter++;
                }
            }
        }
        System.out.println("true: " + counter);
        System.out.println("false: " + (size * size - counter));
于 2013-11-04T02:34:46.393 回答
0
if(SignalMap[i] == true) // this is for a regular array

这可能是您想要的二维数组

 for(int i = 0; i < Size; i++) {
      for(int j = 0; j < Size; j++) {
          if(SignalMap[i][j])  // will result to true if SignalMap[i][j] is in fact true
              counter++;
      }
 }
于 2013-11-04T02:27:29.903 回答