2016-12-02 129 views
-5
public class LocalVariables { 

    static public void main(String args[]){ 

     int var; 

     if(args.length > 0){ 
      var = 10; 

     } 

     else{ 
      var = 20; 
     } 
     System.out.println(var); 
    } 

} 

这里如果我删除else部分它显示编译错误为:局部变量初始化的Java

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The local variable var may not have been initialized 

解释局部变量值是如何初始化,如果我用else一部分。

+0

不应该是'public static void main'而不是'static public void main'? – px06

+1

@ px06从字面上看没有区别。你可以按你喜欢的顺序声明修饰符。 –

+1

那么,没有其他的,当'args.length!= 10'时'var'的值是多少?你认为价值来自哪里? – yshavit

回答

2

看它这样if条件在你的代码不被满足会发生什么?的原因,你会得到一个错误说:

局部变量VAR 可能尚未初始化

,是因为如果条件为false你真的没有var初始化,你做?

另一方面,else正在为您确保现有代码的初始化。

+0

当IF条件不满足时,输出为20。告诉我如何确保初始化为什么不是部分? –

+0

一旦你删除'else'部分和你的args.length'<= 0'。你能告诉我你的代码中'var'的值是多少? – nullpointer

1

如果你删除else块,varif(args.length<0)的值是什么?编译器不知道这一点。所以它显示你错误。要么在声明期间初始化var,要么需要在if和else块中初始化。

+0

'if(args.length <= 0)'。 –

-1

执行main方法时,肯定不会提供args参数。所以args.length > 0返回false。

+0

您是否尝试运行代码? – nullpointer

+0

这个答案与OP的问题没有任何关系。 OP询问编译问题,而不是运行时问题。 –