Почему я получаю исключение нулевого указателя - PullRequest
0 голосов
/ 18 сентября 2010

Сегодня у меня первый день в изучении Java:)

У меня проблемы с запуском очень простого примера (не очень хорошее начало).

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

Я не понимаю, потому что все кажется созданным.

 public static void main(String[] args) {
        // TODO code application logic here

        Console console = System.console();
        String userinput;
         userinput= console.readLine("Enter input: ");
        /* Creates list for planets */
        ArrayList outputlist= new ArrayList();
        outputlist.add(userinput); // Adds users input to the list
        outputlist.add("an entry"); // Adds a string to the list
        System.out.println("\nTwo items: " + outputlist);
    } 

РЕДАКТИРОВАТЬ 1

Как указывало несколько человек, ошибка выдается, когда я пытаюсь прочитать строку из консоли, потому что консоль имеет значение null (хотя я ее создаю?).

Я чувствую себя немного глупо, спрашивая это, но как я могу сделать консоль "не нулевой". Что я и делал, используя Console console = System.console ().

Я ожидал от рабочего процесса написания простого пользовательского ввода с использованием netbeans. Нажмите кнопку отладки. Смотрите всплывающее окно. Введите текст. Смотрите вывод.

РЕДАКТИРОВАТЬ 2

O.K

После небольшого перебора выясняется, что вы не можете использовать system.console внутри netbeans. Я не понимаю почему. Я просто пользовательский сканер.

Теперь я не уверен, какой ответ принять о-0

Ответы [ 4 ]

2 голосов
/ 18 сентября 2010
Console console = System.console();
String userinput;
userinput= console.readLine("Enter input: ");

вместо этого используйте следующий код;я думаю, что System.console используется в платформе .Net

String userinput;
InputStreamReader sr =new InputStreamReader(System.in);
BufferReader br=new BufferReader(sr);
userinput=br.readLine();
2 голосов
/ 18 сентября 2010

Должно быть System.console().Вы не делаете никакой другой операции над объектом, которая вызвала бы исключение нулевого указателя.И, как указал @McDowell, System.console() может возвращать нулевое значение

1 голос
/ 18 сентября 2010

Запустите это в терминале (оболочка в linux или cmd в windows).

В моем случае я поместил ваш код в файл (Test.java).После сборки IDE (в моем случае eclipse) создает файл bin (Test.class)

Итак, просто перейдите в эту папку и вызовите:

$ java Test
Enter input: asdasd

Two items: [asdasd, an entry]

И работает!

0 голосов
/ 18 сентября 2010

Вы не проверяете ни одно из значений результата. Таким образом, если один из этих вызовов возвращает значение «ноль», и вы пытаетесь впоследствии использовать его, как если бы это была ссылка / указатель на объект, отсюда и возникает ваше исключение NullPointerException.

Вероятными виновниками являются System.console () и console.readLine ().

http://download.oracle.com/javase/6/docs/api/java/io/Console.html#readLine%28%29 говорит, что readLine может вернуть ноль. http://download.oracle.com/javase/6/docs/api/java/lang/System.html#console%28%29 также говорит, что этот вызов может вернуть ноль. Поэтому лучше проверяйте значения, возвращенные в обоих случаях, прежде чем их использовать.

(Как и в целом, если функция указывает такие возможные результаты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...