Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中用于链接列表的自编节点类_Java_Linked List - Fatal编程技术网

java中用于链接列表的自编节点类

java中用于链接列表的自编节点类,java,linked-list,Java,Linked List,我正在学习Java课程,我们的部分家庭作业是编写单链接列表类和节点类 此类包含两个成员:\ private BusArrival _busArr; private BusArrivalNode _next; 其中,BusArrival是一个以前编写的类,它可以正常工作 我在使用setNext方法时遇到了问题,特别是如何复制next节点的数据而不是指针 这是我写的课程: 如前所述,BusArrival类的所有方法都很好 public class BusArrivalNode { pri

我正在学习Java课程,我们的部分家庭作业是编写单链接列表类和节点类

此类包含两个成员:\

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
,则是的,新代码可能是正确的。你需要提供更多关于作业的信息,以获得更好的帮助。