1. ホーム
  2. java

[解決済み】エラー:二項演算子「&&」の不正なオペランドタイプ

2022-02-10 17:44:27

質問

何が間違っているのかわからないのですが、間違っているのはこの行です。

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);

}
}

解決方法は?

if文の括弧内の3つのサブステートメントは、それぞれブール値を表す必要があります。Javaでは、=は値の代入に使われ、==は等値性のチェックに使われます。したがって、if文を次のように変更する必要があります。

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

また、zとiを1ずつ増加させるのではなく(forループの一部としてすでに行っているので)、i++ --> i + 1とz++ --> z + 1を作るのもいいかもしれません。

お役に立てれば幸いです。