在没有if语句的情况下获取其他内容:
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
这就是我得到的错误
答案 0 :(得分:17)
删除此行末尾的分号:
if (temp > 95 || temp < 20);
请,请使用大括号! Java与不是类似Python,其中缩进代码会创建一个新的块范围。最好安全地使用它并且总是使用大括号 - 至少在你获得更多使用该语言的经验并准确理解时你可以省略它们。
答案 1 :(得分:2)
问题是使用正常缩进的第一个if if (temp > 95 || temp < 20);
与
if (temp > 95 || temp < 20)
{
}
即如果temp不在20和95之间,则执行空块。没有其他的可以做到这一点。
如果对应下一行,则其他行没有,因此产生错误
处理此问题的最佳方法是使用大括号来显示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");
}
答案 2 :(得分:1)
我打算为你重新格式化。如果使用大括号,则永远不会出现此问题。
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) //<-- I removed the semicolon that caused the error
{
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");
}
}
}
}
}
}
}
答案 3 :(得分:0)
发生此错误是因为您在if语句之后输入了分号。 在第12行的第一个if语句的末尾删除分号。
if (temp > 95 || temp < 20);