3

これが厄介なエラーであることは知っていますが、修正方法がわかりません。

public static void main (String args[]){
Console kitty = System.console();
String username = kitty.readLine("Username: ");
}

String username = kitty.readLine("Username: ");

エラーが発生します。誰かが私が間違っていることを教えてください、ありがとう。

4

2 に答える 2

4

javadoc から:

存在する場合、現在の Java 仮想マシンに関連付けられた一意の Console オブジェクトを返します。

javadoc に関連付けられたコンソールがない場合、ポイントされた行は null オブジェクトに対するメソッドの呼び出しであるため、例外になります。

アプリケーションをどのように起動しますか?

仮想マシンにコンソールがあるかどうかは、基盤となるプラットフォームと、仮想マシンが呼び出される方法に依存します。標準入出力ストリームをリダイレクトせずに対話型コマンド ラインから仮想マシンを起動すると、そのコンソールが存在し、通常、仮想マシンを起動したキーボードとディスプレイに接続されます。たとえば、バックグラウンド ジョブ スケジューラによって仮想マシンが自動的に起動される場合、通常、仮想マシンにはコンソールがありません。

于 2012-06-09T19:06:45.797 に答える
2

標準入力からユーザー名を読み取りたい場合は、次のコードを使用できます。

try {
    System.out.print("Username: ");
    InputStreamReader streamReader = new InputStreamReader(System.in);
    BufferedReader bufferedReader = new BufferedReader(streamReader);
    String username = bufferedReader.readLine();
} catch (IOException e) {
    e.printStackTrace();
}

System.console() によって返されるコンソールは必ずしも存在するとは限りません。そのため、NullPointerException が発生します。

于 2012-06-09T19:18:26.770 に答える