2012-06-09 3 views
3

Я знаю, что это ошибка noobish, но я не знаю, как ее исправить.system.console NullPointerException

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

Строка имя пользователя = kitty.readLine ("Имя пользователя:");

производит ошибку. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно, спасибо.

ответ

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.

4

Из Javadoc:

Возвращает уникальный объект консоли, связанный с текущим Java виртуальной машины, если любой.

Если консоль, связанная с javadoc, отсутствует, то заостренная линия является вызовом метода на нулевом объекте и, следовательно, исключение.

Как запустить приложение?

ли виртуальная машина имеет консоль зависит от базовой платформы, а также от способа, в котором вызывается виртуальная машина . Если виртуальная машина запускается из интерактивной командной строки без перенаправления стандартного ввода и выходных потоков , тогда ее консоль будет существовать и будет, как правило, , подключенной к клавиатуре и дисплею, с которого была запущена виртуальная машина . Если виртуальная машина запускается автоматически, для примерапри помощи планировщика фоновых заданий, то обычно не будет консоли .

Смежные вопросы