Ошибка выполнения: поле «val», поскольку «<local5>.next» имеет значение null (ошибка обращения связанного списка) [дублиJAVA

Программисты JAVA общаются здесь
Anonymous
Ошибка выполнения: поле «val», поскольку «<local5>.next» имеет значение null (ошибка обращения связанного списка) [дубли

Сообщение Anonymous »

Prev.next.val работает нормально внутри цикла while, но если я напечатаю то же самое снаружи, это выдаст ошибку. Я не могу понять, почему? Но если я распечатаю prev.next.val вне цикла while с условием if, он сработает и напечатает правильное значение. Эту ошибку я получаю снова и снова

Код: Выделить всё

ListNode dummy=new ListNode(-1);
dummy.next=head;
ListNode prev=null;
while(head!=null){
dummy=head.next;
head.next=prev;
prev=head;
head=dummy;
if(prev.next!=null){
System.out.println("$"+prev.val); //This works
System.out.println("*"+prev.next.val); //This works
}
}

System.out.println(prev.val); //This works
if(prev.next!=null) System.out.println(prev.next.val); //Also this works. God knows why.
System.out.println(prev.next.val); //This doesn't  work
Например, возьмем этот TC->1,2,3,4,5. Внутри цикла он печатает $5 и *4. Вне цикла он также печатает $5 и *4 (в условии if). Это означает, что значение prev.next не равно нулю. Но после этого выдает ошибку времени выполнения для prev.next.val. Может кто-нибудь помочь? Есть ли какая-то концепция, которую я упускаю? Я застрял на этом уже 2 дня.

Подробнее здесь: https://stackoverflow.com/questions/787 ... t-reversal

Вернуться в «JAVA»