2009-12-16 2 views

ответ

17
Console c = System.console(); 

c null null?

Doc:

общественности статической консоли консоль()

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

Возврат: Системная консоль, если таковая имеется, иначе null.

+0

Разве это не заводской метод? – andandandand

+0

Ох ... как я могу получить объект консоли из Netbeans? – andandandand

+0

Я не пробовал использовать этот вызов в Netbeans, но вы можете использовать удаленную отладку в Eclipse, чтобы обойти это: http://stackoverflow.com/questions/104254/java-io-console-support-in-eclipseide/105403 # 105403 Я уверен, что можно сделать что-то подобное в Netbeans. – McDowell

4

NullPointerException - это исключение RuntimeException, что означает, что он не должен быть объявлен в сигнатуре метода.

+1

Это ответ на вопрос о том, почему NPE брошен, учитывая, что подпись не указывает никаких исключений. Когда я прочитал этот вопрос, это, по-видимому, было основной проблемой путаницы. –

2

c null как есть?

Кстати, ваш оператор readLine эквивалентен c.readLine("args") - это то, что вы намерены?

1

В фрагменте кода есть что-то странное. Вы объявляете переменную, называемую «readline», но вы ее не инициализируете и не используете.

Возможно ли, что в программе вы каким-то образом используете эту переменную без ее инициализации? (длинный снимок, я знаю)

+0

это образец учебника. – andandandand

2

System.console() возвращен null, это единственная строка в этом фрагменте кода, которая могла бы, возможно, выбрасывать исключение из null-указателя.

4

через: http://www.codeguru.com/forum/showthread.php?t=487190 для деталей

Перед использованием метода он всегда платит читать API документы о том, что делает метод. Например документы для метода консоли() говорят:

Сообщений:

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

Если эта виртуальная машина имеет консоль , то он представлен уникальный экземпляр этого класса, который может быть , полученного путем вызова метода System.Console(). Если пульт не доступен, тогда вызов этого метода возвращает null.of этого метода возвращает null.

Если вы пытаетесь вызвать программу из командной строки с помощью команды java, тогда у нее будет консоль, и метод не должен возвращать null.of этого метода возвращает null.

Кроме того, с помощью класса Scanner будет работать в вашей 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(); 
Смежные вопросы