我正在尝试在java中使用Console类。使用此代码
import java.io.Console;
public class ConsoleClass {
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;
}
}
这里我得到NullPointerException当我试图在netbeans中运行但是当我尝试在没有netbeans IDE的cmd中运行时我没有得到任何异常。为什么?
答案 0 :(得分:4)
static Console console()
Returns the unique Console object associated with the current Java virtual machine, if any.
如果有的话。
http://download.oracle.com/javase/6/docs/api/java/lang/System.html
答案 1 :(得分:1)
控制台通常与独立于框架运行的进程相关联。它们是将进程的标准输入和输出与shell连接的一种方法。如果您的类作为更大框架的组件运行,那么框架可能拥有控制台,并且您的程序可能根本没有控制台。
在没有控制台的情况下启动程序还有其他条件和技术。它们通常在保证发生控制台破坏的情况下使用,但是您希望程序分离,以致控制台的破坏不会发出程序终止的信号。
因此,您无法保证控制台的存在;但是,如果您要在可能存在控制台的环境中运行程序,则应该利用它。
答案 2 :(得分:0)
System.console()
会返回Console
个实例if a console is associated with the process。 - 在NetBeans下运行,您可能没有关联的控制台。