2013-02-24 2 views
0

Прошу прощения, если это было каким-то образом ответили где-то в другом месте, но я недостаточно разбираюсь в java, чтобы идентифицировать подобную проблему из какой-либо другой ситуации.Java Исключение Null-указателя в вызове конструктора

Это может быть жестким, чтобы получить всю информацию здесь, так что я постараюсь, чтобы получить необходимые в

Я пишу программу календаря, и когда я называю конструктор в демонстрационном классе:.

 System.out.println("Enter month (1 - 12)"); 
    month = console.nextInt(); 

    System.out.println("Enter year (> 1500)"); 
    year = console.nextInt(); 

    Calendar myCalendar = new Calendar(month, year); 

Я получаю исключение нулевого указателя в строке, где я вызываю конструктор. Я также получить один при первом вызове функции в самом конструкторе:

public Calendar(int m, int y) 
{ 
    firstDate.setDate(m, 1, y); 
    firstDayOfMonth(); 
} 

Второй номер в вызове метода SETDATE является 1, потому что я использую класс даты я уже писал, и в календаре, только месяц и год требуется, поэтому я на следующий день, чтобы быть 1.

После этого мои сообщения об ошибках становятся менее понятными для меня следующим образом:

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272) 

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

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

Редактировать 1: Я инициализирую firstDate следующим образом: `private ExtDate firstDate; ' Я попробую эти заявления для печати, может быть, это поможет.

Edit2: Хорошо, я думаю, что у меня это есть. Спасибо за помощь. Процесс обучения и все такое.

+9

моя первая догадка 'firstDate' is null – PermGenError

+1

firstDate или console is null. трудно сказать из того, что вы опубликовали. – duffymo

+0

Как вы инициализируете 'firstDate'? –

ответ

3

NullPointerException возникает, когда вы используете null где-нибудь, где вы должны использовать объект. (Подробнее см. Ссылку).

В двух словах: где-то в коде у вас есть нулевая ссылка вместо объекта. Возможно, вы не инициализировали его раньше, и именно поэтому вы получили это исключение.

К сожалению, этот объект предположительно firstDate. Вы можете проверить его с помощью вызова System.out.println(firstDate);, перед вызовом firstDate.setDate(m, 1, y);. Возможно, он распечатает null.

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