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

关于console类的readline()方法的用法问题
为了测试console类的readline()方法,我试了以下几种方案:
1、
[code=Java]
public   class   Consoletest   {
public   static   void   main(String[   args)   {
while(true){
String   str   =   System.console().readLine();
System.out.println(str);
}
}
}[/code]
2、
[code=Java]
public   class   Consoletest   {
                public   static   String   str=null;
public   static   void   main(String[]   args)   {
while(true){
str   =   System.console().readLine();
System.out.println(str);
}
}

}[/code]
3、
[code=Java]
public   class   Consoletest   {
public   static   void   main(String[]   args)   {
while(true){
String   str   =   new   String(System.console().readLine());
System.out.println(str);
}
}

}[/code]
但运行时均抛出java.lang.NullPointerException异常,求大神解释原因以及解决方案。

------解决方案--------------------
那是以为控制台的console为空,所以会报空指针异常
public class Consoletest{
public static void main(String[] args){ 
//测试一下是否为空,如果为空就返回,如果不为空进行循环输出
Console console=System.console();
if(console==null){
System.out.println("不能使用控制台");
return;
}
while(true){
String str=System.console().readLine();
System.out.println(str);
}
}
}
------解决方案--------------------
以Javaw所执行的应用程式(eclipse)没有主控制台(console),所以取不到console物件,System.console()只能是null了。