【发布时间】:2022-02-01 15:17:19
【问题描述】:
我有一个 data 类型的 ArrayList(它存储了一个名为 name 的字符串和一个名为 age 的整数)。打印 Arraylist 的内容时,它会打印正确的年龄,但与我上次添加的元素的名称相同。 这是 PrintCollection 方法
import java.util.*;
import java.util.Iterator;
public class Lab5 {
public static void PrintCollection(Collection<Data> c)
{
for (Iterator<Data> iter = c.iterator(); iter.hasNext();)
{
Data x = (Data)iter.next();
x.Print();
}
System.out.println();
}
}
这里是数据类
import java.util.ArrayList;
public class Data
{
public static String name;
private int age;
Data(String n,int a)
{
name = n;
age = a;
}
public String GetName()
{
return(name);
}
public void SetName(String n)
{
name = n;
}
public int GetAge()
{
return(age);
}
public void SetAge(int a)
{
age = a;
}
public void Print()
{
System.out.print(("("+GetName()));
System.out.print(",");
System.out.print(GetAge());
System.out.print(") ");
}
public static void main(String args[])
{
ArrayList<Data> array = new ArrayList<Data>();
Data x = new Data("Fred",21);
array.add(x);
Data y = new Data("Jo",43);
array.add(y);
Data z = new Data("Zoe",37);
array.add(z);
Lab5.PrintCollection(array);
}
}
【问题讨论】:
-
您的字符串
name被声明为静态public static String name;。类的所有实例共享相同的静态变量。删除static。 -
并且您应该遵循 Java 命名约定:方法名称以驼峰命名,即它们以小写开头。