日期:2014-05-20  浏览次数:20925 次

initialized新手错误
import   java.io.*;
public   class   Test{

public   static   void   main(String   args[]){
String   name;
int   age;

try{

BufferedReader   input   =   new   BufferedReader(new   InputStreamReader(System.in));
System.out.print( "请输入你的名字: ");
name=input.readLine();
System.out.print( "请输入你的年龄: ");
age   =Integer.parseInt(input.readLine());

}catch(IOException   e){}

System.out.println(name+ "   is   "+age);

}
}

会出现这样的错误提示:
Test.java:18:   variable   name   might   not   have   been   initialized
System.out.println(name+ "   is   "+age);
                                      ^
Test.java:18:   variable   age   might   not   have   been   initialized
System.out.println(name+ "   is   "+age);

如果把
System.out.println(name+ "   is   "+age);
这句放进try里面才可以编译成功

这是为什么呢?
                                                              ^
2   errors

------解决方案--------------------
在定义name,age的时候给它们做个初始化工作,比如name= " ",age=0,这样在java编译期间,它就不会认为你没有初始化了。在catch中可以,大概是因为它已经是异常流程了。

虽然Java编译器表面上看起来这样很不聪明,但实际上这种方式能够帮我们消除这类隐藏的BUG,比如你的readLine里传进来的是直接Enter的空值,这样你的parseInt就会出现异常了。