2

我正在尝试使用 NETBEANS 7.1.2 进行一些 Java 编码,但是当我尝试构建此代码时,它给了我错误“'else' without '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");
    }



}

问题出现在 //grass 下的“else if”。难道我做错了什么?

4

3 回答 3

11

在这一行:

if (search1=="Stone" || search1=="Rock" || search1=="stone" || search1=="rock" || search1=="1");

而这一行:

else if (search1=="Grass" || search1=="grass");

您必须在最后删除;。那些分号放错了位置,编译器会将第一if条语句解释为if没有主体,将 之间的代码解释{}为块作用域,而else if语句则解释为else没有if.

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

于 2012-06-18T04:15:08.227 回答
2

你有一个“;” 在第一个条件之后。

编译器假定这是 if 语句的结尾,因此编译器在“else if”行显示错误。去除 ”;” 应该没问题!

于 2012-06-18T04:14:08.553 回答
0

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

    String unit=jTextField1.getText();
            if(unit.equals("kg") || unit.equals("gm")){
    // some code
            }
else if(unit.equals("dzn")||unit.equals("qty")){
    // some code
        }
于 2012-10-05T10:26:34.047 回答