2d布尔值是一个静态变量,如果这意味着任何东西。我以为我只能引用数组的名称,但是这样做会出错。
public class Game {
static boolean[][] board = new boolean[3][3];
}
public class Computer
{
if (Game.board = true)
{
//code
}
}
答案 0 :(得分:1)
当然,Game.board
是你如何引用boolean[][]
二维数组。但是,您认为可以直接将boolean
的3x3数组与true
进行比较?
答案 1 :(得分:1)
if(Game.board = true)
将抛出编译器错误,因为board
是一个二维数组,因此无法分配单个boolean
值。
此外,当比较时,请确保使用比较运算符==
也许,你想做类似的事情:
if(Game.board[i][j] == true)
其中i
和j
正在为数组编制索引:
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])
答案 2 :(得分:1)
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if(board[i][j] == true){
//Code
}
答案 3 :(得分: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
答案 4 :(得分:0)
您将变量board
声明为布尔值的二维数组,并初始化它。
static boolean [] [] board = new boolean [3] [3];
现在,Game.board = true
,您试图将2D布尔数组变量分配给不正确的布尔值。
答案 5 :(得分:0)
A)像这样的代码是一个错误:
if (someBoolean = true)
你只是默默地设置布尔变量而不是测试它。你想要:
if (someBoolean == true)
或更好:
if (someBoolean)
B)boolean[][]
(布尔数组数组)不是布尔值。试试这个:
if (Game.board[x][y])
答案 6 :(得分: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);
}
}
这忽略了你可以做的一些短路逻辑,但希望你明白这一点。
最后一件事,一个=
是分配,而不是比较。使用==
进行比较,例如myInt == 1
。