2011-11-25 181 views
-2
public class Funny { 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub} 
    int n=5; 
    if (n==5);{ 
    System.out.println("welcome"); 
    } 
    else if (n<5);{ 
     System.out.println("world"); 
    } 
} 
} 
} 

Else子句(在if语句)不执行

Description Resource Path Location Type 
Syntax error on token "else", delete this token Funny.java /Hello Woood/src line 15 Java Problem 
+2

如果答案有帮助,请单击复选标记以接受它。这告诉别人这个问题已经回答了。 – Almo

回答

3

你有分号。

你想

if(n==5) { 
    code(); 
} 
1

获得if语句条件和大括号之间摆脱;的。

+0

非常感谢! – mike

0

您应该删除;在else和else之后。如果你只删除;在if语句之后,你的代码将执行System.out.println(“world”);

2

基本上正在发生的事情是,

if (n==5); 

被解释为对自己的声明。类似于“是n等于5?如果是,然后很酷,不管”

下一条语句现在与if没有任何关系。它是一个匿名块按原样执行:

{ 
    System.out.println("welcome"); 
} 

的“别人”的语句现在是没有意义的Java作为没有if语句,将其链接到后(第一个完成因)。因此,语法错误。

另一个经常被忽视的陷阱;是:

while (n==5); { 
    System.out.println("n is still 5, let's make it more..."); 
    n++; 
} 

在这个例子中,你要么得到一个无限循环(n为5,永远不会改变),或者你会得到的打印输出“仍然是n 5 ...”(,即便N在这一点上不是5)。然后它会增加。非常混乱,所有这一切都因为一个;将块与while循环分开。正如大家在我之前所说...,删除;。

希望这有助于...... :-)