如果这意味着什么,那么 2d 布尔值是一个静态变量。我以为我可以只引用数组的名称,但是这样做会出错。
public class Game {
static boolean[][] board = new boolean[3][3];
}
public class Computer
{
if (Game.board = true)
{
//code
}
}
如果这意味着什么,那么 2d 布尔值是一个静态变量。我以为我可以只引用数组的名称,但是这样做会出错。
public class Game {
static boolean[][] board = new boolean[3][3];
}
public class Computer
{
if (Game.board = true)
{
//code
}
}
也许您正在寻找这样的东西?
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
当然,Game.board
这就是您引用boolean[][]
二维数组的方式。但是是什么让你认为你可以直接比较一个 3x3 的boolean
s数组true
呢?
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])
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if(board[i][j] == true){
//Code
}
您的代码有几个问题。首先,您不能直接将 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
.
您将变量声明board
为布尔值的二维数组,并且还对其进行了初始化。静态布尔[][]板=新布尔[3][3];
现在Game.board = true
,您正在尝试将 2D 布尔数组变量分配给不正确的布尔值。
A)这样的代码是一个错误:
if (someBoolean = true)
您只是默默地设置了布尔变量,而不是对其进行测试。你要:
if (someBoolean == true)
或者更好:
if (someBoolean)
B)A boolean[][]
(布尔数组的数组)不是布尔值。尝试这个:
if (Game.board[x][y])