如果声明在数组上

时间:2013-01-06 17:02:33

标签: java primitive-types comparison-operators

我有以下java位

if(board[i][col].equals(true))
    return false

然而,当我编译它时,我得到以下错误 - “int无法解除引用” - 任何人都可以解释这意味着什么?

谢谢!

5 个答案:

答案 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)

如果boardboolean基元的数组,请使用

if(board[i][col] == true)
  return false;

if (board[i][col]) return false;

return !board[i][col];