java - 如何向数组列表的元素添加内容?

标签 java arraylist

我正在尝试向我的 arraylist 对象添加一个等级,当我尝试将两个不同的等级添加到两个不同的 arraylist 对象时,evitything 看起来不错,但是当我尝试打印这两个对象时,它打印得就像两个等级属于同一个对象目的。当你看到示例执行时你就会明白。

这是我的主要方法。

Student s1 = new Student("Cuneyt Cakir", "Istanbul", 35);
Student s2 = new Student("Halis Ozkahya", "Yalova", 28);
Student s3 = new Student("Mustafa Kamil Abitoglu", "Antalya", 20);
s1.addGrade(15);
s1.addGrade(89);
s1.addGrade(26);
s1.addGrade(44);
s2.addGrade(33);
System.out.println(s1);
System.out.println(s2);

结果是:

Name: Cuneyt Cakir / City: Istanbul / Age: 35
Grades: [15, 89, 26, 44, 33]
Name: Halis Ozkahya / City: Yalova / Age: 28
Grades: [15, 89, 26, 44, 33]

这是我在学生类中的添加方法:

public static void addGrade(int grade) {
    if(grade>=0 && grade<=100){
        grades.add(grade);
    } else
        System.out.println("Invalid grade.");
}

这是学生类(class)的另一部分:

public static ArrayList<Integer> grades=new ArrayList<Integer>();

public Student(String value1, String value2, int value3) {
    name=value1;
    city=(value2);
    age=(value3);
}

我使用此代码获得成绩:

public ArrayList<Integer> getGrades() {
    return grades;
}

预期输出是:

Name: Cuneyt Cakir / City: Istanbul / Age: 35
Grades: [15, 89, 26, 44]

Name: Halis Ozkahya / City: Yalova / Age: 28
Grades: [33]

最佳答案

因为grades是一个静态变量。删除“static”关键字,为每个对象创建一个新的 ArrayList 实例。

类中的静态变量对于所有对象都是通用的。因此“grades”变量对于所有 S1、S2 和 S3 实例都是通用的。

关于java - 如何向数组列表的元素添加内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30035333/

相关文章:

java - 如何重新排序 JLabel 的 arrayList 以在列表顶部显示标签

java - Java中HashMap的排序

java - JLabel 不显示另一个类的值

java - Axon Framework : Axon Saga async or sync? 最佳实践是什么?

java - 在servlet内的jquery中检索通过$.get发送的数据数组

java - ArrayList 未正确填充

Java:仅当选择右侧菜单项时才继续迭代数组列表

java - 在随机排序的 ArrayList 中将特定元素与其上面的元素交换

java - cglib 代理类中缺少字段注释

java - 按顺序阅读 PDFBox 中的段落