Java “If”表示NullPointerException
我正在编写一个程序,它使用双链接列表实现执行一些操作。 有一件事我不明白,这让我很困惑 嗯。所以我有两个双链表。我需要创建一个方法,其中参数是第一个双链接列表的索引,我需要在该索引上放置第二个列表 我写了这个方法:Java “If”表示NullPointerException,java,debugging,Java,Debugging,我正在编写一个程序,它使用双链接列表实现执行一些操作。 有一件事我不明白,这让我很困惑 嗯。所以我有两个双链表。我需要创建一个方法,其中参数是第一个双链接列表的索引,我需要在该索引上放置第二个列表 我写了这个方法: public void PutInPlace(int i){ DoublyLinkedList ldw3 = new DoublyLinkedList(); // New doublylinked list. Node current = ld
public void PutInPlace(int i){
DoublyLinkedList ldw3 = new DoublyLinkedList(); // New doublylinked list.
Node current = ldw1.tail; // ldw1 - First doublylinked list, created earlier.
Node current1 = ldw2.tail; //ldw2 - Second doublylinked list, created earlier.
int counter = 0;
while(true){
ldw3.AddHead(current.number);
current = current.prev;
counter++;
if(counter == i){ // THAT if makes NullPointerException
ldw3.AddHead(current1.liczba);
current1 = current1.prev;
if(current1 == null)
break;
}
}
我不想把所有的代码,因为它很长,不容易阅读。那么,为什么ifcounter==i会产生NullPointerException呢?如果程序不起作用的话。问题在哪里
谢谢你们的帮助,伙计们 current1可能为空。但你正在努力获得价值
if(current1 != null)
{
ldw3.AddHead(current1.liczba);
current1 = current1.prev;
}
而不是
current1 = current1.prev;
ldw3.AddHead(current1.liczba);
current1 = current1.prev;
if(current1 == null)
break;
或
把这句话改成这样,
if(current1 == null)
break;
ldw3.AddHead(current1.liczba);
current1 = current1.prev;
而不是
current1 = current1.prev;
ldw3.AddHead(current1.liczba);
current1 = current1.prev;
if(current1 == null)
break;
我认为当前变量是空的。i变量有一个唯一的值,比如说3 Whiletrue是一个无限循环,您的条件计数器==i将只执行一次,因为您总是递增计数器,并且它只会命中值3一次。因此,除非current1没有previous,否则中断将永远不会是它,并且您将到达current没有previous的点,使其为null,并在执行current.prev时给出异常 一个好的做法是,在使用对象的方法或属性之前,始终检查对象是否为null。否,即if不能生成NullPointerException 首先,确保重新编译所有内容,并运行测试。然后发布该测试的输出,包括异常的堆栈跟踪 第二,逐字逐句地发布源代码,使行号清晰
第三,发布PutInPlace方法的javap输出 这还不清楚。在哪一行抛出NPX?你确定参数类型是int而不是Integer吗?也许是,但这一行与分解的if语句有什么关系?问题不在if语句中。在上面一行。