Это:
Console c = System.console();
String readline;
String u = c.readLine("%s", "args");
Броски a NullPointerException.
Все же подпись метода:
public String readLine(String fmt, Object... args)
Почему это исключение бросает?
Console c = System.console();
Is c
null?
Doc:
public static Console console()
Returns the unique Console object associated with the current Java virtual machine, if any.
Returns: The system console, if any, otherwise null.
NullPointerException is a RuntimeException, which means it doesn't have to be declared in the method signature.
Is c
null somehow?
By the way, your readLine statement is equivalent to c.readLine("args")
- is that what you intend?
Во фрагменте кода есть что-то странное. Вы объявляете переменную с именем "readline", но не инициализируете ее и не используете.
Возможно ли, что в программе вы каким-то образом используете эту переменную без ее инициализации? (длинный выстрел, я знаю)
System.console () вернула null, это единственная строка в этом фрагменте кода, которая могла вызвать исключение с нулевым указателем.
через: http://www.codeguru.com/forum/showthread.php?t=487190 подробнее
Перед использованием метода всегда платит прочтите документы API о том, что делает этот метод. Например, в документации по методу console () говорится:
Цитата:
Имеет ли виртуальная машина консоль зависит от базовая платформа, а также на способ, которым виртуальная машина вызван. Если виртуальная машина запущен из интерактивной команды линия без перенаправления стандартной входные и выходные потоки, затем его консоль будет существовать и обычно быть подключенным к клавиатуре и дисплей, с которого виртуальная машина был запущен. Если виртуальная машина запускается автоматически, например планировщиком фоновых заданий, тогда он обычно не будет консоли.
Если на этой виртуальной машине есть консоль то он представлен уникальным экземпляр этого класса, который может быть полученный с помощью System.console () метод. Если нет консоли устройство доступно, тогда вызов этого метода вернет null. этот метод вернет null.
Если вы попытаетесь вызвать программу из командной строки с помощью команды java, то у нее будет консоль, и метод не должен возвращать значение null. Этот метод вернет значение null.
В качестве альтернативы использование класса Scanner будет работать внутри вашей IDE:
Scanner sc = new Scanner (System.in);