0

我在使用这些 if 语句时遇到了问题,无法找出问题所在:

  1. 如果我尝试将它们更改为嵌套的 if,else if 格式,我会收到一个编译器错误,说“else”而没有 if 语句。
  2. if 语句甚至不起作用,正如您从下面的输出中看到的那样,即使字符串不相等,它们也会运行。

任何帮助都会很棒。谢谢!

if (labelArray[0] == e.getSource() && myAppliance.size() >= 1) {
    if (myAppliance.get(0).getClass().getName().toUpperCase().equals("CLOCK")); {
        System.out.println(options[0]);
        System.out.println(myAppliance.get(0).getClass().getName());
        infoBox((myAppliance.get(0).toString()),"Info");
    }
    if (myAppliance.get(0).getClass().getName().toUpperCase().equals("LAMP")); //"Clock", "Lamp", "Television"
    {
        System.out.println(options[1]);
        System.out.println(myAppliance.get(0).getClass().getName());
        infoBox((myAppliance.get(0).toString()),"Info");
    }
    if (myAppliance.get(0).getClass().getName().toUpperCase().equals("TELEVISION")); {
        System.out.println(options[2]);
        System.out.println(myAppliance.get(0).getClass().getName());
        infoBox((myAppliance.get(0).toString()),"Info");
    }
}

输出:

Clock
Clock
Lamp
Clock
Television
Clock
4

3 回答 3

7

删除;带有 s 的行末尾的if

于 2013-04-26T20:21:07.630 回答
0

;从 if 语句之后立即删除,编译器将它们视为语句,它违背了使用if自身的目的。

于 2013-04-26T20:23:19.660 回答
0

Ifs 处理它们可以采用的下一条语句,因此它们将在下一行运行或将大括号括起来的块视为语句。通过在 if 之后编写;,它基本上是使用一个空语句,然后无论如何都继续执行您的代码块。

只需删除;它,它应该可以工作。

于 2013-04-26T20:24:09.533 回答