我正准备参加OCA 8考试......
在enthuware测试中有一个问题,下面代码的正确结构是什么(如果属于哪个其他代码 - 没有大括号)?
...
if
statement 1;
if
statement 2;
else
statement 3;
else
statement 4;
...
enthuware提供的答案是这样的......
if //statement 1
| if //statement 2
| |
| else //statement 3
else //statement 4
但是当我在eclipse中执行代码(没有大括号)时,我在最后的其他地方得到了一个编译时错误......
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token "else", delete this token
那么,这是正确/有效/可能吗?
答案 0 :(得分:0)
如果你不放大括号,只考虑if()
之后的第一个语句。在您的情况下,两个if
语句是嵌套的,但第一个else
语句用于父if
,第二个else
因此没有if
。
答案 1 :(得分:-1)
如果没有括号,每个条件后面只有一个语句,所以:
[37;41m [39;49m
[37;41m [BadMethodCallException] [39;49m
[37;41m Method filter does not exist. [39;49m
[37;41m [39;49m
如果if(value)
Sys.out.print("Cow");
Sys.out.print("Rabbit");
为真,则会打印"Cow"
。但是,每次都会打印value
。要确保执行两个/多个指令,具体取决于if语句,您必须使用块,如:
"Rabbit"
所以当没有括号时,它不会编译为:
if(value){
Sys.out.print("Cow");
Sys.out.print("Rabbit");
}
这被视为一个,只有一个被认为是if语句。第一个"如果"只是一个独立的if语句,因此第二个else语句是错误的,因为它之前没有if语句。
答案 2 :(得分:-1)
没有花括号:
if (true)
System.out.println("First if");
else
if (true)
System.out.println("second if, first else");
else
System.out.println("second if, second else");
System.out.println("outside statement");
虽然我强烈建议添加它们:
if (true) {
System.out.println("First if");
} else if (true) {
System.out.println("second if, first else");
} else {
System.out.println("second if, second else");
}
System.out.println("outside statement");