-1

ブール配列が設定されており、格納されている true と false の数を調べる必要があります...

    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

1 行のソリューションを見たいですか?

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

もちろん、偽のカウントは褒め言葉です。

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

説明

まず、 のcounter各反復で 0 に等しくなるように初期化しましたfor loop。これにより、毎回リセットされます。それはあなたが望むものではありません。上部( の前)で 1 回実行しますfor loop

次に、すべての行のすべての列を繰り返し処理し、そのように「真」の数を数えるためにネスト する必要があります。for loop

第三に、次の理由により、比較ステートメントif(SignalMap = true)は正しくありません。

  1. 2D 配列を扱っているため、行列内の位置を指定する必要があります。そうSignalMapでなければならないSignalMap[rowPosition][columnPosition]
  2. 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
于 2013-11-04T02:31:03.637 に答える
0

これは Java であるため、変数は小文字にする必要があります。

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

配列の次元ごとに、for ループが必要です。

double for ループをコーディングする 1 つの方法を次に示します。カウンタは 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

これは、2D配列に必要なものかもしれません

 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 に答える