java中用于链接列表的自编节点类
我正在学习Java课程,我们的部分家庭作业是编写单链接列表类和节点类 此类包含两个成员:\java中用于链接列表的自编节点类,java,linked-list,Java,Linked List,我正在学习Java课程,我们的部分家庭作业是编写单链接列表类和节点类 此类包含两个成员:\ private BusArrival _busArr; private BusArrivalNode _next; 其中,BusArrival是一个以前编写的类,它可以正常工作 我在使用setNext方法时遇到了问题,特别是如何复制next节点的数据而不是指针 这是我写的课程: 如前所述,BusArrival类的所有方法都很好 public class BusArrivalNode { pri
private BusArrival _busArr;
private BusArrivalNode _next;
其中,BusArrival是一个以前编写的类,它可以正常工作
我在使用setNext方法时遇到了问题,特别是如何复制next节点的数据而不是指针
这是我写的课程:
如前所述,BusArrival类的所有方法都很好
public class BusArrivalNode
{
private BusArrival _busArr;
private BusArrivalNode _next;
public BusArrivalNode (BusArrival b)
{
_busArr = new BusArrival(b);
_next = null;
}
public BusArrivalNode (BusArrival b, BusArrivalNode n)
{
_busArr = new BusArrival(b);
_next = n;
}
public BusArrivalNode ( BusArrivalNode n)
{
_busArr = new BusArrival(n._busArr);
_next = n._next;
}
public BusArrival getBusArr()
{
return _busArr;
}
public BusArrivalNode getNext()
{
return _next;
}
public void setBussArr(BusArrival b)
{
_busArr.setArrivalTime(b.getArrivalTime());
_busArr.setLineNum(b.getLineNum());
_busArr.setNoOfPass(b.getNoOfPass());
}
public void setNext(BusArrivalNode next) ** IS THIS THE CORRECT WAY?**
{
_next._busArr = new BusArrival(next._busArr);
_next._next = new BusArrivalNode(next._next);
}
}
在您似乎遇到问题的构造函数中,
BusArrivalNode(BusArrivalNode n)
,它创建了一个名为tmp
的新的BusArrivalNode
,其成员与给定的节点相同
然后将当前类的\u next.\u busArr
设置为一个值。当您这样做时,\u next
尚未定义,因此您正在将成员设置为空值。这将导致一个NullPointerException,因为您试图做一些事情而不做任何事情
该构造函数的当前内容:
BusArrivalNode tmp = new BusArrivalNode(n._busArr, n._next);
_next._busArr = tmp._busArr;
_next._busArr = tmp._busArr;
您可能想要的:
_busArr = n._busArr;
_next = n._next;
谢谢,我弄错了。 “复制”ctor适用于尚未创建的对象,那些得到它的对象进行了一些更正 这是在我的例子中工作的Node类:
public class BusArrivalNode
{
private BusArrival _busArr;
private BusArrivalNode _next;
public BusArrivalNode (BusArrival b)
{
_busArr = new BusArrival(b);
_next = null;
}
public BusArrivalNode (BusArrival b, BusArrivalNode n)
{
_busArr = new BusArrival(b);
_next = n;
}
public BusArrivalNode ( BusArrivalNode n)
{
_busArr = new BusArrival(n._busArr);
_next = n._next;
}
public BusArrival getBusArr()
{
return _busArr;
}
public BusArrivalNode getNext()
{
return _next;
}
public void setBussArr(BusArrival b)
{
_busArr.setArrivalTime(b.getArrivalTime());
_busArr.setLineNum(b.getLineNum());
_busArr.setNoOfPass(b.getNoOfPass());
}
public void setNext(BusArrivalNode next)
{
_next = next;
}
}
“我有麻烦了”还不够详细。你也应该有一些测试线束。现在还不清楚问题出在哪里。还可以了解junit。谢谢。我做了一点不同的改变,它也可以工作吗?它可能工作,也可能不工作,这取决于你想要它做什么。如果希望
\u busArr
指向与传入节点的\u busArr
具有相同值的新busArr
,则是的,新代码可能是正确的。你需要提供更多关于作业的信息,以获得更好的帮助。