-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 中输入“石头”并点击 jButton1 时,它只会给我“未知块”,当 If 语句指定它应该将 jTextField 设置为“石头: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

您需要使用.equals来检查字符串,如下所示:

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

于 2012-06-18T14:02:08.820 回答
1

所以首先不要比较 String using==而是使用equals(),然后在最后一个 else 语句中添加 a ;,这意味着 else 的结尾(所以jTextField2.setText("Unknown Block")总是被执行)。你应该放下它。

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

你应该按照风影我爱罗所说的去做。但在这种情况下,问题不是那样的。在以下语句中删除;after else。

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

这里发生的是

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

无论如何都会被执行,因为它在 if else 块之后。分号有效地终止了 else 语句。

于 2012-06-18T14:04:01.783 回答
0

使用.equals代替==来比较字符串。见:http ://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/

于 2012-06-18T14:04:23.987 回答