簡體   English   中英

錯誤:二進制運算符“ &&”的錯誤操作數類型

[英]error: bad operand types for binary operator '&&'

不知道這里出了什么問題是那行錯了。

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。

希望這可以幫助!

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

使用double等於進行比較。 我想你錯過了它:-)

您應該在比較它們時使用賦值運算符。

if((board[z][i] == 1) && (board[z][i++] == 1) && (board[z++][i] == 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中對對象的引用進行比較。

您的代碼不應該是

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

強調==問題

您使用賦值(=)運算符,而不是檢查它們是否相等。 用==運算符檢查相等性。 試試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM