1

2dブール値は、それが何かを意味する場合、静的変数です。配列の名前だけを参照できると思いましたが、それを行うとエラーが発生します。

public class Game {

static boolean[][] board = new boolean[3][3];
}

public class Computer
{
  if (Game.board = true)
    {
        //code
    }
}
4

7 に答える 7

1

確かに、 2次元配列Game.boardを参照する方法です。しかし、 sの3x3配列を直接boolean[][]比較できると思う理由は何ですか?booleantrue

于 2013-01-29T05:03:16.420 に答える
1

if(Game.board = true)boardは2次元配列であり、単一の値を割り当てることができないため、コンパイラエラーがスローされbooleanます。

また、比較するときは、必ず比較演算子を使用してください==

おそらく、あなたは次のようなことをしたいと思うでしょう:

if(Game.board[i][j] == true)ここでij配列のインデックスを作成しています。

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
    {
        if(board[i][j] == true)
        {
          // Code
        }
    }
}

あなたは、特別な理由でboard宣言しましたか?static

board[i][j]値を返すので、実際には:booleanの必要はありません。== true

if(board[i][j])
于 2013-01-29T05:06:44.437 に答える
1
for (int i = 0; i < 3; i++)
   for (int j = 0; j < 3; j++)
      if(board[i][j] == true){

         //Code

      }
于 2013-01-29T05:09:08.080 に答える
1

おそらくあなたはこのようなものを探していますか?

import java.util.Arrays;

class Test
{
    public static void main(String[] args)
    {
        boolean[][] board = {{}, {}, {}};
        // all values in board are set to false by default

        boolean[][] board2 = new boolean[0][3];
        boolean[][] board3 = {{true},{true},{true, false, false}};
        boolean[][] board4 = {{}, {true}, {true, true}, {}};

        printInfo(board, 1);
        printInfo(board2, 2);
        printInfo(board3, 3);
        printInfo(board4, 4);


    }

    public static boolean check(boolean[][] board)
    {
        if(board.length == 0) return false;

        int colLength = 0;
        int elementsInBoard = 0;    

        for (int i = 0; i < board.length; i++)
        {
            colLength = board[i].length;
            elementsInBoard += colLength;
            for(int j = 0; j < colLength; j++)
            {
                if (board[i][j] == false)
                {
                    return false;
                }
            }
        }

        if (elementsInBoard == 0)
        {
            return false;
        }else
        {
            return true;
        }
    }

    public static void printInfo(boolean[][] board, int id)
    {
        System.out.println("Board : " + id);
        System.out.println(Arrays.deepToString(board)); 
        System.out.println(check(board));       
    }
}

出力:

Board : 1
[[], [], []]
false
Board : 2
[]
false
Board : 3
[[true], [true], [true, false, false]]
false
Board : 4
[[], [true], [true, true], []]
true
于 2013-01-29T05:20:50.253 に答える
0

A)このようなコードはバグです:

if (someBoolean = true)

ブール変数をテストするのではなく、黙って設定しました。あなたが欲しい:

if (someBoolean == true)

またはそれ以上:

if (someBoolean)


B)A boolean[][](ブール値の配列の配列)はブール値ではありません。これを試して:

if (Game.board[x][y])
于 2013-01-29T05:11:51.043 に答える
0

変数をブール値の2D配列として宣言し、boardそれも初期化します。static boolean [] [] board = new boolean [3] [3];

ここで、Game.board = true2Dブール配列変数を誤ったブール値に割り当てようとしています。

于 2013-01-29T05:07:48.457 に答える
0

コードにいくつか問題があります。boolean[][]まず、とを直接比較することはできませんtrue。ループを使用する必要があります。次に、メソッド内にコードステートメントを配置する必要があります。メソッドのないifステートメントのようなものは使用できません。これがあなたが望むものの例です:

public class Game {
    private boolean[] board = new boolean[3][3];

    public static void main(String[] args) {
        boolean allTrue = true;
        for (int i = 0; i < board.length; i++) {
            boolean[] row = board[i];
            for (int j = 0; j < row.length; j++) {
                allTrue &= row[j];
            }
        }
        System.out.println(allTrue);
    }
}

これはあなたがすることができるいくつかの短絡論理を無視します、しかしうまくいけばあなたは要点を理解します。

最後に、1つ=は割り当てであり、比較ではありません。==などの比較に使用しmyInt == 1ます。

于 2013-01-29T05:19:45.240 に答える