我有以下java位
if(board[i][col].equals(true))
return false
然而,当我编译它时,我得到以下错误 - “int无法解除引用” - 任何人都可以解释这意味着什么?
谢谢!
答案 0 :(得分:8)
它可能是一个基本类型数组(int
?)。
使用==
,一切都会好的。但如果它是int
,请确保您没有将它与true
进行比较:Java是强类型的。
如果要测试两个不同对象的相等性,请使用equals
。
答案 1 :(得分:4)
// Assuming
int[][] board = new int[ROWS][COLS];
// In other languages, such as C and C++, an integer != 0 evaluates to true
// if(board[i][col]) //this wont work, because Java is strongly typed.
// You'd need to do an explicit comparison, which evaluates to a boolean
// for the same behavior.
// Primitives don't have methods and need none for direct comparison:
if (board[i][col] != 0)
return false;
// If you expect the value of true to be 1:
if (board[i][col] == 1)
return false;
// Assuming
boolean[][] board = new boolean[ROWS][COLS];
if (board[i][col] == true)
return false;
// short:
if (board[i][col])
return false;
// in contrast
if (board[i][col] == false)
return false;
// should be done using the logical complement operator (NOT)
if (!board[i][col])
return false;
答案 2 :(得分:1)
使用以下声明:
boolean[][] board = initiate.getChessboard();
您需要使用以下条件:
if(board[i][col] == true)
return false;
也可以写成:
if(board[i][col])
return false;
这是因为equals
仅适用于对象,而布尔值不是对象,它是基本类型。
答案 3 :(得分:0)
if(board[i][col])
return false
如果数组boolean[][]
与==
进行比较。比较== true
也可以省略。
答案 4 :(得分:0)
如果board
是boolean
基元的数组,请使用
if(board[i][col] == true)
return false;
或
if (board[i][col]) return false;
或
return !board[i][col];