2011-01-30 197 views
2
import java.io.*; 
public class listjava 
{ 
    public static void main(String args[]){ 
     Console c = System.console(); 
     char[] pw; 
     pw = c.readPassword("%s","pw: "); 
     for (char ch: pw) 
      c.format("%c ",ch); 
     c.format("\n"); 

     MyUtility mu = new MyUtility(); 
     while(true) 
     { 
      String name = c.readLine("%s","input?: "); 
      c.format("output : %s \n",mu.doStuff(name)); 
     } 
    } 
} 

class MyUtility{ 
    String doStuff (String arg1){ 
     return " result is " + arg1; 
    } 
} 

我得到了这样的错误:在我的Java程序中导致NullPointerException的原因是什么?

Exception in thread "main" java.lang.NullPointerException 
    at listjava.main(listjava.java:7) 

为什么我的程序错了吗?

回答

7

System.console()返回null。

引用Java的文档:

返回与当前Java虚拟机相关联的唯一Console对象(如果有)。

因此,可能没有控制台与您的JVM相关联。您可能正在运行您的程序Eclipse或其他IDE。尝试从系统的命令行运行程序。它应该工作。

从命令行运行程序。

  1. 走到哪里listjava.class驻留
  2. 运行Java解释器

    $ java的listjava

+0

谢谢,你说得对。还有一个问题?为什么在使用IDE时出现这种错误?谢谢! – 2011-01-30 03:21:18

3

目录按照Javadoc for System.console()

返回:系统控制台,如果有的话,否则为空。

所以我想这是System.console()交还null和你的线,因此

pw = c.readPassword("%s","pw: "); 

被提领null。我不确定你想要使用什么修复程序;也许从System.in读取?

相关问题