2011-01-30 155 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讀取?

相關問題