错误:二元运算符'&&'的错误操作数类型

时间:2015-06-29 16:25:26

标签: java

不确定这里的错误是错误的。

if((board[z][i] = 1) && (board[z][i++] = 1) && (board[z++][i] = 1)){

这是我的完整代码:

public class Solution {

 static void nextMove(int player, int [][] board){

}

    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int player;
    int board[][] = new int[8][8];

    //If player is 1, I'm the first player.
    //If player is 2, I'm the second player.
    player = in.nextInt();

    //Read the board now. The board is a 8x8 array filled with 1 or 0.
  for(int z = 0; z < 8; z++){
      for(int i = 0; i < 8; i++) {
          board[(z)][(i)] = in.nextInt();
         }
  }for(int z = 0; z < 8; z++){
       for(int i = 0; i < 8; i++) {
           if((board[z][i] = 1) && (board[z][i++] = 1) && (board[z++][i] = 1)){
               System.out.print(z + " " + i);
        }
    }
  }
    nextMove(player,board);

}
}

6 个答案:

答案 0 :(得分:2)

您需要使用关系运算符==而不是=。 if语句的括号内的3个子语句中的每一个都应该表示一个布尔值。在Java中,=用于分配值,==用于检查相等性。因此,您必须将if语句更改为:

if((board[z][i] == 1) && (board[z][i++] == 1) && (board[z++][i] == 1)){

此外,不是将z和i递增1(因为你已经将其作为for循环的一部分),也许make i ++ - &gt; i + 1和z ++ - &gt; z + 1。

希望这有帮助!

答案 1 :(得分:1)

if((board[z][i] ==1) && (board[z][i++] == 1) && (board[z++][i] == 1)){

使用double equals进行比较。我想你错过了它: - )

答案 2 :(得分:1)

当您应该比较它们时,您正在使用赋值运算符。

if((board[z][i] == 1) && (board[z][i++] == 1) && (board[z++][i] == 1)){

答案 3 :(得分:1)

if((board[z][i] = 1) && (board[z][i++] = 1) && (board[z++][i] = 1)) //Yes this line is wrong

您在(board[z][i] = 1) (board[z][i++] = 1) (board[z++][i] = 1)处使用'='进行这些比较。您需要使用'=='操作数进行比较。

'='运算符用于将值分配给变量,而'=='用于比较。 只需添加一个点,当比较两个字符串的值时,您必须使用 .equals()方法,因为'=='比较在Java上引用对象。

答案 4 :(得分:1)

你的代码不应该

if((board[z][i] == 1) && (board[z][i++] == 1) && (board[z++][i] == 1)){

强调 == 问题

答案 5 :(得分:1)

您使用赋值(=)运算符而不是检查它们是否相等。使用==运算符检查相等性。 试试这个

if((board[z][i] ==1) && (board[z][i++] == 1) && (board[z++][i] == 1)){