-1

Netbeans 7.1.2 IDE を使用しています。私のコードはここにあります:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)         {                                         
    // TODO add your handling code here:
    String search1;
    search1 = jTextField1.getText();
    search1.toLowerCase();
    jTextField2.setText("tes1");
    // stone
    if (search1=="stone" || search1=="rock" || search1=="1")
    {
        jTextField2.setText("Stone: 1");
    }

    // grass
    else if (search1=="Grass" || search1=="grass")
    {
        jTextField2.setText("Grass: 2");
    }

    // dirt
    else if (search1=="Dirt" || search1=="dirt" || search1=="Soil" || search1=="soil")
    {
        jTextField2.setText("Dirt: 3");
    }

    // cobblestone
    else if (search1=="cobblestone" || search1=="cobble")
    {
        jTextField2.setText("Cobblestone: 4");
    }

    else;
    {   
        jTextField2.setText("Unknown Block");
    }
}     

ビルドを実行し、jTextField1 に「stone」を入力して jButton1 を押すと、If ステートメントで jTextField を「Stone: 1」に設定する必要があると指定されている場合に、「不明なブロック」が表示されます。私は何か間違ったことをしていますか?これが完全に明らかなエラーになってしまったら申し訳ありません。

4

5 に答える 5

5

Compare String using equals()

if (search1.equals("stone") || search1.equals("rock") || search1.equals("1"))

Read this for more information.

== compares references,not the values. In your case, you want to check for the value equality, not the reference equality.


EDIT:

Remember, you need to do all your String comparisons that way.

Besides,

you have an unwanted ; here:

  else;
    {   
        jTextField2.setText("Unknown Block");
    }

remove that ; after else.

于 2012-06-18T14:01:38.840 に答える
1

You need to use the .equals to check strings, like so:

if (search1.equals("stone") || search1.equals("rock") || search1.equals("1"))

于 2012-06-18T14:02:08.820 に答える
1

So first don't compare String using == but use equals() instead then in the last else statement you have add a ; that means the end of the else (so jTextField2.setText("Unknown Block") is always executed). You should drop it.

else; //<==Remove the ;
{   
    jTextField2.setText("Unknown Block");
}
于 2012-06-18T14:02:15.920 に答える
0

文字列を比較する.equals代わりに使用します。==参照: http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/

于 2012-06-18T14:04:23.987 に答える
0

風影我愛羅の言う通りにすればいい。しかし、この場合、問題はそれではありません。次のステートメントでは;、else の後を削除します。

else;
{   
    jTextField2.setText("Unknown Block");
}

ここで起こることは

{   
    jTextField2.setText("Unknown Block");
}

if else ブロックの後であるため、とにかく実行されます。セミコロンは、else ステートメントを効果的に終了します。

于 2012-06-18T14:04:01.783 に答える