我正在使用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");
}
}
当我运行构建时,我将'stone'输入jTextField1,然后点击jButton1,它只是给我“Unknown Block”,当一个If语句指定它应该将jTextField设置为“Stone:1”时。难道我做错了什么?对不起,如果这最终成为一个完全明显的错误。
答案 0 :(得分:5)
使用String
equals()
if (search1.equals("stone") || search1.equals("rock") || search1.equals("1"))
阅读this了解详情。
==
比较参考,而不是值。在您的情况下,您要检查值相等,而不是引用相等。
编辑:
请记住,您需要以这种方式进行所有String
比较。
此外,
这里有一个不受欢迎的;
:
else;
{
jTextField2.setText("Unknown Block");
}
在;
之后移除else
。
答案 1 :(得分:1)
您需要使用.equals
来检查字符串,如下所示:
if (search1.equals("stone") || search1.equals("rock") || search1.equals("1"))
答案 2 :(得分:1)
所以首先不要使用==
来比较字符串,而是使用equals()
代替然后在最后一个else语句中添加;
,这意味着其他结束(所以始终执行jTextField2.setText("Unknown Block")
)。你应该放弃它。
else; //<==Remove the ;
{
jTextField2.setText("Unknown Block");
}
答案 3 :(得分:0)
你应该做Kazekage Gaara所说的。但在这种情况下,问题并非如此。在以下语句中删除;
之后的其他内容。
else;
{
jTextField2.setText("Unknown Block");
}
这里发生的是
{
jTextField2.setText("Unknown Block");
}
无论如何都会执行,因为它位于if else块之后。分号有效地终止了else语句。
答案 4 :(得分:0)
使用.equals
代替==
来比较字符串。
请参阅:http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/