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就会出现异常了。