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
}
}
確かに、 2次元配列Game.board
を参照する方法です。しかし、 sの3x3配列を直接boolean[][]
比較できると思う理由は何ですか?boolean
true
if(Game.board = true)
board
は2次元配列であり、単一の値を割り当てることができないため、コンパイラエラーがスローされ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
}
おそらくあなたはこのようなものを探していますか?
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
A)このようなコードはバグです:
if (someBoolean = true)
ブール変数をテストするのではなく、黙って設定しました。あなたが欲しい:
if (someBoolean == true)
またはそれ以上:
if (someBoolean)
B)A boolean[][]
(ブール値の配列の配列)はブール値ではありません。これを試して:
if (Game.board[x][y])
変数をブール値の2D配列として宣言し、board
それも初期化します。static boolean [] [] board = new boolean [3] [3];
ここで、Game.board = true
2Dブール配列変数を誤ったブール値に割り当てようとしています。
コードにいくつか問題があります。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
ます。