错误:没有“if”的“else”

新手上路,请多包涵

在没有 if 语句的情况下获取 else:

 import java.util.Scanner;

public class LazyDaysCamp
{
    public static void main (String[] args)
    {
        int temp;
        Scanner scan = new Scanner(System.in);

        System.out.println ("What's the current temperature?");
        temp = scan.nextInt();
        if (temp > 95 || temp < 20);
            System.out.println ("Visit our shops");
            else if (temp <= 95)
                if (temp >= 80)
                System.out.println ("Swimming");
                else if (temp >=60)
                    if (temp <= 80)
                    System.out.println ("Tennis");
                    else if (temp >= 40)
                        if (temp < 60)
                        System.out.println ("Golf");
                        else if (temp < 40)
                            if (temp >= 20)
                            System.out.println ("Skiing");
    }
}

如果这就是它看起来像的原因,我需要使用级联。另外,如果我正确地进行了级联,你能告诉我吗?我一直没能找到级联的好例子,所以我只是尽力了解级联的含义。

 LazyDaysCamp.java:14: error: 'else' without 'if'
            else if (temp <= 95)
            ^
1 error

这就是我得到的错误

原文由 user1740066 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 774
2 个回答

删除此行末尾的分号:

 if (temp > 95 || temp < 20);

请使用大括号! Java 不像 Python,在 Python 中缩进代码会创建一个新的块作用域。最好谨慎行事并始终使用大括号——至少在您对这门语言有了更多的经验并确切了解 何时 可以省略它们之前。

原文由 Óscar López 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题是第一个 if if (temp > 95 || temp < 20); 使用正常缩进是一样的

if (temp > 95 || temp < 20)
{
}

也就是说,如果温度不在 20 到 95 之间,则执行一个空块。没有别的了。

else 的下一行没有 if 与之对应,因此会产生错误

处理这个问题的最好方法总是使用大括号来显示 if 之后执行的内容。这并不意味着编译器会捕获错误,但首先您更有可能通过查看缩进来发现任何问题,而且错误可能看起来更易读。但是,您可以使用 eclipse、checkstyle 或 FindBugs 等工具,它们会告诉您是否未使用 {} 或使用空块。

更好的方法可能是,在重新测试事物时整理逻辑

if (temp > 95 || temp  < 20)
{
  System.out.println ("Visit our shops");
} else if (temp >= 80)
{
    System.out.println ("Swimming");
} else if (temp >=60)
{
   System.out.println ("Tennis");
} else if (temp >= 40)
{
     System.out.println ("Golf");
} else if (temp >= 20)
{
   System.out.println ("Skiing");
}

原文由 mmmmmm 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题