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)
为什么我的程序错了?
答案 0 :(得分:7)
System.console()
返回null。
引用Java的文档:
返回与当前Java虚拟机关联的唯一Console对象(如果有)。
因此,可能没有与 JVM 关联的控制台。您可能正在 Eclipse 或其他 IDE 中运行您的程序。尝试从系统的命令行运行程序。它应该工作。
从命令行运行程序。
listjava.class
所在的目录运行java的解释器
$ java listjava
答案 1 :(得分:3)
根据Javadoc for System.console()
:
返回:系统控制台(如果有),否则为null。
所以我认为System.console()
正在回复null
和你的行
pw = c.readPassword("%s","pw: ");
因此取消引用null
。我不确定你可能想要使用什么修复程序;或许从System.in
读取?