【发布时间】:2014-01-31 00:39:37
【问题描述】:
这只是一个愚蠢的问题, 为什么我在删除元素时会出现异常... 我刚刚在我的同学那里看到了这段代码,当我运行代码并选择删除时,我得到了 NULLPOINTEREXCEPTION
顺便说一下代码....(我得到错误的地方)
if(!(head.data).equals(del))
{
tail=head;
Node temp=head.next;
while(temp!=null)
{
if((temp.data).equals(del))
{
tail.next=temp.next;
size--;
break;
}
tail=temp;
temp=temp.next;
}
}
else
{
head=head.next;
}
}
else
{
System.out.println("LinkedList is empty");
}
break;
如果有人能帮我解决这个问题,我很高兴....
完整代码。 导入java.io.*; 导入 java.util.LinkedList;
public class Main
{
public static void main(String[]args) throws Exception
{
BufferedReader x = new BufferedReader(new InputStreamReader(System.in));
LinkedList<String> list = new LinkedList<>();
list.add("Jarn");
list.add("Zhai");
System.out.println("List:..");
//System.out.println();
System.out.println(list);
System.out.println();
String ch,in,fi,del;
boolean kita = false;
int size=0,data;
Node head=null, tail=head;
do
{
System.out.println("Choose Option.\n1-Insert\n2-Delete\n3-Dispay\n4-Find\n5-Quit");
System.out.println();
System.out.println("Choice: ");
ch=x.readLine();
System.out.println();
switch (ch)
{
case "1":
System.out.println("Enter Name you Want to Insert..");
in=x.readLine();
list.addLast(in);
System.out.println("Name "+in+" was successfully inserted..");
System.out.println();
break;
case "2":
if(size>=0)
{
System.out.println("Enter name to del..");
del=x.readLine();
if(!(head.data).equals(del))
{
tail=head;
Node temp=head.next;
while(temp!=null)
{
if((temp.data).equals(del))
{
tail.next=temp.next;
size--;
break;
}
tail=temp;
temp=temp.next;
}
}
else
{
head=head.next;
}
}
else
{
System.out.println("LinkedList is empty");
}
break;
case "3":
System.out.println("List..");
System.out.println();
System.out.println(list);
break;
case "4":
System.out.println("Enter name You Want to Find..");
fi=x.readLine();
while(size!=(list.size()))
{
String temp = list.get(size);
if(temp.equalsIgnoreCase(fi))
{
kita=true;
}
size++;
}
if(kita)
{
System.out.println("Name: "+fi+" exists!.");
System.out.println();
}
else
{
System.out.println("Name: "+fi+" not found!.");
System.out.println();
}
break;
case "5":
System.out.println("Thank You..");
break;
default:
System.out.println("INVALID OPTION..");
System.out.println();
break;
}
}
while(!ch.equals("5"));
}
class Node
{
String data;
Node next;
Node(String d)// node class Constructor.
{
data = d;
next= null;
}
}
}
【问题讨论】:
-
你能发布错误stack trace吗?
-
Main.main(Main.java:45) Java 结果中的线程“main”java.lang.NullPointerException 异常:1
-
请使用完整的堆栈跟踪编辑您的问题。还用行表示数字
45。 -
if(!(head.data).equals(del)) { tail=head;节点 temp=head.next; while(temp!=null) {
-
最后一次编辑没有改善您的帖子。您删除了所有初始化。我想问题在于,当您阅读它们时,
head或del或head.data是null。您是否尝试过使用调试器?
标签: java nullpointerexception linked-list nodes singly-linked-list