Java ';如果';“给出错误”';其他';没有';如果'&引用;在爪哇

Java ';如果';“给出错误”';其他';没有';如果'&引用;在爪哇,java,netbeans,if-statement,Java,Netbeans,If Statement,我正试图使用NETBEANS 7.1.2进行一些Java编码,但当我尝试构建此代码时,会出现错误“'else'而不带'if'”: private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String search1; search1 = jTextField1.getText(); // stone

我正试图使用NETBEANS 7.1.2进行一些Java编码,但当我尝试构建此代码时,会出现错误“'else'而不带'if'”:

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    String search1;
    search1 = jTextField1.getText();

    // stone
    if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1");
    {
        jTextField2.setText("Stone: 1");

    }

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



}
问题发生在//草地下的“else if”处。我做错什么了吗?

在第一个条件之后,您有一个“;”

编译器假定这是if语句的结尾,因此编译器在“else if”行显示错误。 去掉“;”就可以了

在这一行中:

if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1");
else if (search1=="Grass" || search1=="grass");
这一行:

if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1");
else if (search1=="Grass" || search1=="grass");
您必须删除
在末尾。这些分号放错了位置,编译器将把第一个
if
语句解释为没有正文的
if
,把
{}
语句之间的代码解释为块范围,把
else if
语句解释为没有
if
else


另外,请注意,所有的字符串比较都是错误的,在Java中,必须使用
equals()
来比较两个字符串的相等性,而不是
=
,它比较标识

我和你一样有同样的问题。 我发现这是一个解决方案,对我来说效果很好。我想这就是你需要的

    String unit=jTextField1.getText();
            if(unit.equals("kg") || unit.equals("gm")){
    // some code
            }
else if(unit.equals("dzn")||unit.equals("qty")){
    // some code
        }

谢谢这就解决了问题。stackoverflow的另一个令人惊奇且有用的社区示例!