2009-12-16 51 views

回答

17
Console c = System.console(); 

c null?

Doc

公共靜態console控制檯()

返回與當前的Java 虛擬機關聯的唯一Console對象 ,如果有的話。

返回:系統控制檯(如果有) 否則爲空

+0

是不是工廠方法? – andandandand 2009-12-16 22:38:30

+0

哦......我如何從Netbeans獲得控制檯對象? – andandandand 2009-12-16 22:41:04

+0

我還沒有嘗試過在Netbeans中使用這個調用,但是你可以在Eclipse中使用遠程調試來獲得這個:http://stackoverflow.com/questions/104254/java-io-console-support-in-eclipse-ide/105403#105403我相信在Netbeans中可以做類似的事情。 – McDowell 2009-12-16 22:43:20

4

NullPointerException是一個RuntimeException,這意味着它不必在方法簽名中聲明。

+1

鑑於簽名沒有指定任何例外情況,它是NPE被拋出問題的答案。在我讀到這個問題時,這似乎是提問者混淆的主要觀點。 – 2009-12-16 23:03:17

2

c null莫名其妙?

順便說一句,您的readLine語句相當於c.readLine("args") - 這是你的意圖嗎?

1

代碼片段中有些奇怪的東西。你聲明瞭一個名爲「readline」的變量,但是你不要初始化它,也不要使用它。

是否有可能在程序中以某種方式使用此變量而不是初始化它? (遠射,我知道)

+0

這是一本教科書示例。 – andandandand 2009-12-16 22:44:03

2

System.console()返回null,它是該代碼片段中唯一可能引發空指針異常的行。

4

通過:http://www.codeguru.com/forum/showthread.php?t=487190查看詳細

使用的方法之前,總是值得閱讀的方法做什麼的API文檔。用於控制檯()方法示例文檔說:

引用:

無論是虛擬機具有 控制檯取決於 底層平臺,也和 方式,其中虛擬機是調用了 。如果虛擬機是 從一個交互式命令 行開始,而不需要重新定向標準 輸入和輸出流然後其 控制檯將存在,並且通常將 被連接到鍵盤和 顯示從該虛擬機 推出。如果虛擬機 由後臺作業調度程序自動啓動,例如 ,則它通常不會有控制檯。

如果此虛擬機具有控制檯 那麼它是由可通過調用 System.console()方法獲得 這個類的一個獨特 實例表示。如果沒有控制檯 設備可用,則該方法的調用 將返回null.of該方法將返回null。

如果您嘗試使用java命令,然後將有一個控制檯和方法不應該返回null.of該方法將返回null從命令行調用程序。

或者,使用掃描儀類將你的IDE裏面工作:

Scanner sc = new Scanner(System.in);

0

因爲System.console()是您正在使用的IDE null。請嘗試使用java.util.Scanner代替:

import java.util.Scanner; 
Scanner s = new Scanner(System.in); 
String u = s.nextLine(); 
相關問題