-6

私はif文で作業していました:

if(test == 1 || test == 2){
    do something
}

私はJavaで作業していますが、どういうわけかこのコードは「オペランドの型が正しくありません」というエラーを生成します。OR (||) であることはわかっていますが、修正方法がわかりません。コード:

public static int[] map = 
//1  2  3  4  5  6  7  8  9 10
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //0
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //1
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //2
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //3
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //4
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //5
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //6
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //7
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //8
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //9
};
public static int mapRow, mapCol;
public static int mapRef = (mapRow + (mapCol * 10)) - 1;

String grass = "[ ] ";
String water = "{} ";

private int counter = 0;

void mapCreate(){
    while(counter != 99){
        if((counter = 0) || (counter = 10) || (counter = 20) || (counter = 30) || (counter = 40) || (counter = 50) 
                                           || (counter = 60) || (counter = 70) || (counter = 80) || (counter = 90) || (counter = 100)){
            if(map[counter] == 1){
                System.out.println(grass);
            } else if(map[counter] == 2){
                System.out.println(water);
            }
        } else {
            if(map[counter] == 1){
                System.out.print(grass);
            } else if(map[counter] == 2){
                System.out.print(water);
            }
        }
        counter++;
    }
}

エラー:

mapcreater.java:27: error: bad operand types for binary operator '||'
        if((counter = 0) || (counter = 10) || (counter = 20) || (counter = 30) ||         (counter = 40) || (counter = 50)
4

4 に答える 4

5

int値を=代入演算子と比較しないでください。を使用==して比較すると、必要な結果が得られますboolean。変化する

if((counter = 0) ||

if((counter == 0) || // And the others after it also.
于 2013-08-30T23:24:18.673 に答える
0

test変数の型を確認してください。非数値型をリテラル数値と比較しようとしている可能性があります。

于 2013-08-30T23:21:47.083 に答える
0

そうじゃないかな

if((counter == 0) || (counter == 10) || (counter == 20) || (counter == 30) 

double に注意してください==

于 2013-08-30T23:25:26.677 に答える
0

他の答えは直接適用されますが、コードを大幅に単純化できるため、これは%(またはモジュラス)演算子に適したケースです。

// use `==` (equality), not `=` (assignment)
if (counter % 10 == 0) {  
  // when counter is 0, 10, 20, etc ..
  ..
}

現在、型エラーは「不適切なオペランド型」です。これは、式として使用される割り当てが、割り当てられた値に評価されるためです。

したがって、counter = 0は 0 (typed int) にcounter = 10評価され、10 (typed ) に評価されint0 || 10(typed as int || int) になりますが、これは Java では意味がありません。 Java||は として入力された場合にのみ受け入れるため、演算子は無効boolean || booleanです。

逆に、counter == 0はブール値に評価され、ブール値にcounter == 10評価されるため、Java は である式の型に満足していますboolean || boolean

于 2013-08-30T23:27:58.707 に答える