2016-08-14 48 views
-3

我正在准备亚奥理事会8检查...嵌套如果 - 别人在Java中

有在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 

那么,这是正确的/有效的/可能的吗?

+2

你能提供[mcve]吗? – 2016-08-14 16:20:03

+1

这不是有效的代码。你有1,如果加上另一个,如果有两个elses – Bohemian

+0

@Bohemian我认为第二个'if'和它的'else'嵌套在第一个'if'中。这很难遵守,所以我可能是错的。无论哪种方式,在测试中提出这样的问题都毫无意义。这可能是有效的,但对于皮特的爱只是使用大括号。 –

回答

0

如果你不把大括号,只有if()后的第一个语句被认为。在你的情况下,两个if语句是嵌套的,但第一个else声明是父母if,因此第二个else没有if

-1

每天如果没有括号的条件后,只需一个语句,所以:

if(value) 
Sys.out.print("Cow"); 
Sys.out.print("Rabbit"); 

这里,"Cow"会如果value是真实的打印。但是,每次都会打印"Rabbit"。为了确保二/多指令执行所依据的if语句,你必须使用块像:

if(value){ 
Sys.out.print("Cow"); 
Sys.out.print("Rabbit"); 
} 

所以当没有括号它不会为编译:

if 
    statement 2; 
else 
    statement 3; 

这被视为一个,只有一个被认为是如果陈述。第一个“if”只是一个独立的if语句,因此第二个else语句是错误的,因为它没有在它之前的语句。

-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");