所以我建立一个作为链表存储的字符串的类。
出于某种原因,每当我尝试打印出一个字符串时,我都会得到NullPointerException
。这只发生在我尝试打印我在第二个构造函数中复制的字符串时。
class Node
{
char c;
Node next;
int index;
}
public class StringLink {
int len;
Node head= new Node();
public StringLink(String init)
{
head.index=0;
Node temp= head;
len=init.length();
int i=0;
while (i<this.len)
{
Node n= new Node();
n.c=init.charAt(i);
n.index=i+1;
temp.next=n;
temp=n;
i++;
}
}
// constructor -- initialize object with another StringLink
public StringLink(StringLink other)
{
Node temp=other.head;
temp=temp.next;
len=other.length();
for (int i=0; i<this.len; i++)
{
Node n= new Node();
n.c= temp.c;
n.index=i+1;
if (temp.next!=null){
temp=temp.next;
n.next=temp;
}
else n.next=null;
}
}
以下是无法工作的toString()方法:
public String toString()
{
char[] narr= new char[this.len];
Node temp= new Node();
temp=this.head;
temp=temp.next;
System.out.println(temp.c);
for (int i=0; i<this.len;i++)
{
narr[i]=temp.c;
System.out.println(narr[i]);
if (temp.next!=null)
temp=temp.next;
}
return new String(narr);
}
感谢您的帮助!
答案 0 :(得分:0)
在第二个构造函数中,this.head
从未初始化,因此它是null
。当您尝试在toString
中访问它时,您将获得NullPointerException。
实际上在第二个构造函数中,您似乎构建了您丢弃的Node对象,因为您没有将它们分配给任何东西。你应该检查一下你的逻辑。