在我的Java程序中导致这个NullPointerException的原因是什么?

时间:2011-01-30 03:07:09

标签: java

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;
    }
}

我收到了这样的错误:

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

为什么我的程序错了?

2 个答案:

答案 0 :(得分:7)

System.console()返回null。

引用Java的文档:

  

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

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

从命令行运行程序。

  1. 转到listjava.class所在的目录
  2. 运行java的解释器

    $ java listjava

答案 1 :(得分:3)

根据Javadoc for System.console()

  

返回:系统控制台(如果有),否则为null。

所以我认为System.console()正在回复null和你的行

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

取消引用null。我不确定你可能想要使用什么修复程序;或许从System.in读取?