2016-10-30 17 views
0
if ((board[x][x] && board[x + 1][x + 1] && board[x + 2][x + 2]) == 'Y') { 
      playerWins = true; 
      } 

はなぜ& &とを使用することはできませんエラー「演算子を&&引数の型(S)のchar、charの定義されていない」||ここに?は、なぜ私は取得しています

+0

'board'変数が何種類あるの? –

答えて

2

あなたがこの希望:

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') { 
    playerWins = true; 
} 

&&は一緒にブール式を結合するために使用することができます。

あなたのコードは、(x && y) == z(x == z) && (y == z)に相当するような何らかの種類の配信ルールを想定していました。英語では、「xとyが両方ともzの場合」と述べることができますが、プログラミング言語(および正式論理)にはそのような定義はありません。

1

Java論理演算子はブール値だけの演算を実行します。したがって、任意の論理演算子の2つのオペランドはブール値である必要があります。あなたのコードでは、board [x] [y]はchar型であるため、例外がスローされます。あなたはそれを何かと比較するか、それ以外のものをブール値にする必要があります。 ボード[x + 1] [x + 1]と同じです。 (携帯電話から型付き)

0

Javaの条件評価は、他の言語(C、C++など)と比較して異なります。

JavaやCのループ条件は(のためにある間、もし、終了条件)++両方のブール式を期待しているが、そのような場合のようにコード(= 5) が原因であり、Javaのコンパイルエラーが発生します暗黙的ではありません intからbooleanへの変換を絞り込みます。

詳細については、以下のリンクをご参照ください:あなたがここに彼らがブールに評価されないため、「& &」または「||」と評価されるように、これらの式を連結することはできませんが、 https://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B

0

をこの場合はcharsに変換します。

しかし、あなたはこれを行うことができます。

if (board[x][x] == 'Y' && board[x + 1][x + 1] == 'Y' && board[x + 2][x + 2] == 'Y') { 
    playerWins = true; 
} 

かさえ、このように:

/*so this methods check if the board has a different value than 'Y', so it returns false immediately without going over the other positions, otherwise if the value was equal to Y at all positions the if statement wont be accessed, 
you will exit the for-loop & return true; You're main method must store the boolean value returned not more */ 

public static boolean winGame(PARAMS p) { //you can give it the 2d array as a parameter for example.. 
    for(int x = 0; x < value; x++) { // you specify the value according to your board 
     if(board[x][x] != 'Y') { 
      return false; 
    } 
     return true; 
} 
関連する問題