1

如果这意味着什么,那么 2d 布尔值是一个静态变量。我以为我可以只引用数组的名称,但是这样做会出错。

public class Game {

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

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

7 回答 7

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 回答
1

当然,Game.board这就是您引用boolean[][]二维数组的方式。但是是什么让你认为你可以直接比较一个 3x3 的booleans数组true呢?

于 2013-01-29T05:03:16.420 回答
1

if(Game.board = true)将引发编译器错误,因为board它是一个二维数组,因此不能分配单个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 回答
0

您的代码有几个问题。首先,您不能直接将 aboolean[][]与进行比较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);
    }
}

这忽略了一些你可以做的短路逻辑,但希望你明白这一点。

最后一件事,单=是分配,而不是比较。用于==比较,例如myInt == 1.

于 2013-01-29T05:19:45.240 回答
0

您将变量声明board为布尔值的二维数组,并且还对其进行了初始化。静态布尔[][]板=新布尔[3][3];

现在Game.board = true,您正在尝试将 2D 布尔数组变量分配给不正确的布尔值。

于 2013-01-29T05:07:48.457 回答
0

A)这样的代码是一个错误:

if (someBoolean = true)

您只是默默地设置了布尔变量,而不是对其进行测试。你要:

if (someBoolean == true)

或者更好:

if (someBoolean)


B)A boolean[][](布尔数组的数组)不是布尔值。尝试这个:

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