为了测试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了。