每次在链接列表中添加新的值时,之前的值都会被覆盖

问题描述 投票:0回答:1

我正在尝试将原始类“day”的对象添加到链接列表中,这些对象具有称为“classment”的整数值,以便我可以跟踪哪一天先到来。问题是,每次我向此链接列表添加一天并将其“类别”的值更改为其在列表中的排名时,所有先前添加的日期也会将其“类别”的值更改为最后添加的日期。这是代码的简化

public class test {

    public static void main(String[] args) {   
        LinkedList <day> days = new LinkedList<day>(); 
        for(int i=0;i<5;i++){
            day dayx = new day(); // Create a new day object here
            dayx.classment = i;
            days.add(dayx);
            dayx = null;
        }
        for(int i=0;i<5;i++){
            System.err.println(days.get(i).classment);
        }
    }

结果就是

4
4
4
4
4

我知道这似乎是一个非常简单的问题,网上已经有很多解决方案,但我找到的所有结果都是用 C++ 编写的,而且我无法将解决方案转换为 java。甚至可能是我没有完全理解链表的概念,但我确实尝试过常规数组,但最终遇到了同样的问题。

我只需要它们是单独的日子,具有单独的变量和值。我希望结果只是:

0
1
2
3
4

这也是日间课程的简化:

public class day {

    static Double startingRest=0.0, currentRest=0.0;
    static int rownumber=-1,N=0;
    static String date,title;
    static int classment;

    public day(){
        rownumber=-1;
        N=0;
        startingRest=0.0;
        currentRest=0.0;
    }

}

java pointers linked-list
1个回答
0
投票

所以我创建了一个简单的日间课程

package org.example;

public class Day {
    private int classment;

    public Day() {
        // Default constructor
    }

    public Day(int classment) {
        this.classment = classment;
    }

    public int getClassment() {
        return classment;
    }

    public void setClassment(int classment) {
        this.classment = classment;
    }
}

然后删除在代码中分配 null ,一切正常

public static void main(String[] args) {
        LinkedList<Day> days = new LinkedList<>();
        for(int i=0;i<5;i++){
            Day dayx = new Day();
            dayx.setClassment(i);
            days.add(dayx);
        }
        for(int i=0;i<5;i++){
            System.err.println(days.get(i).getClassment());
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.