Java 如何停止覆盖arraylist?

Java 如何停止覆盖arraylist?,java,list,arraylist,static,Java,List,Arraylist,Static,我使用输入获取值并将其添加到ArrayList。当我第二次输入数据时,它会在输入第二个数据后覆盖第一个数据。无法修复它 学生班 输入参与者类 import java.util.*; 公共类输入参与者扩展学生{ 公共体育赛事; public InputParticipant(int rollNumb、String firstName、String lastName、, 整数年龄、字符串性别、字符串运动事件) { 超级(号码、名、姓、年龄、性别); 这个.sportsEvent=sportsEven

我使用输入获取值并将其添加到ArrayList。当我第二次输入数据时,它会在输入第二个数据后覆盖第一个数据。无法修复它

学生班

输入参与者类

import java.util.*;
公共类输入参与者扩展学生{
公共体育赛事;
public InputParticipant(int rollNumb、String firstName、String lastName、,
整数年龄、字符串性别、字符串运动事件)
{
超级(号码、名、姓、年龄、性别);
这个.sportsEvent=sportsEvent;
}
公共可用性()
{
系统输出打印(“资格:”);
//50米赛跑
如果(年龄>=10岁&&age=10岁&&age=15岁&&(sportsEvent.equals(“400米赛跑”)| | sportsEvent.equals(“尤文林”)| | sportsEvent.equals(“铁饼”)//400米赛跑,尤文林和铁饼
{
System.out.println(“是”);
}
其他的
{
系统输出println(“否(年龄:50米比赛女性最低10-12岁,100米比赛最低10-15岁,400米比赛最低15岁,尤文林和铁饼)”;
}
}
公共静态void main(字符串[]args)
{
列表螺柱=新的ArrayList();
输入参与者i;
i=新输入参与者(rollNumber、firstName、lastName、年龄、性别、sportsEvent);
扫描仪输入=新扫描仪(系统输入);
while(true)
{
System.out.println(“输入学生详细信息:”);
系统输出打印(“卷号:”);
rollNumber=in.nextInt();
系统输出打印(“名字:”);
firstName=in.next();
系统输出打印(“姓氏:”);
lastName=in.next();
系统输出打印(“年龄:”);
年龄=in.nextInt();
系统输出打印(“性别:”);
性别=in.next();
系统输出打印(“体育赛事(50米/100米/400米/尤文林/铁饼):”;
sportsEvent=in.next();
添加第(i)款;
列表l=新的ArrayList();
l、 addAll(螺柱);
迭代器disp=l.Iterator();
while(disp.hasNext())
{
InputParticipant st=disp.next();
System.out.println(“卷号:+st.rollNumber+”\n名称:+st.firstName+“+st.lastName+”\n发件人:+st.gender+”\n管理:+st.age+“\n体育赛事:+st.sportsEvent”);
圣·易立性();
System.out.println(“--------------------------------------------------------”;
}
}
}
}

因为您在循环中创建了新对象: 列表l=新的ArrayList()

试着这样做:

public static void main(String[] args) {
    List<InputParticipant> stud=new ArrayList<InputParticipant>();
    //List<InputParticipant> l=new ArrayList<InputParticipant>();

    Scanner in = new Scanner(System.in);
    while(true){
        System.out.println("Enter the Student details:");
        System.out.print("roll number:");
    rollNumber=in.nextInt();
    System.out.print("First name:");
    firstName=in.next();
    System.out.print("Last name:");
    lastName=in.next();
    System.out.print("age:");
    age=in.nextInt();
    System.out.print("gender:");
    gender=in.next();
    System.out.print("sports event(50meterrace/100meterrace/400meterrace/Juvelin/discus):");
    sportsEvent=in.next();
    stud.add(i);
    InputParticipant i = new InputParticipant(rollNumber, firstName, lastName, age, gender, sportsEvent);

    Iterator<InputParticipant> disp = l.iterator();
    while(disp.hasNext()){
        InputParticipant st=disp.next();
        System.out.println("Roll Number:"+st.rollNumber+"\nName: "+st.firstName+" "+st.lastName+"\nGender: "+st.gender+"\nAge: "+st.age+"\nSports Event:"+st.sportsEvent);
        st.elegibility();
        System.out.println("-----------------------------------------");
    }
    }
    } 
publicstaticvoidmain(字符串[]args){
列表螺柱=新的ArrayList();
//列表l=新的ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“输入学生详细信息:”);
系统输出打印(“卷号:”);
rollNumber=in.nextInt();
系统输出打印(“名字:”);
firstName=in.next();
系统输出打印(“姓氏:”);
lastName=in.next();
系统输出打印(“年龄:”);
年龄=in.nextInt();
系统输出打印(“性别:”);
性别=in.next();
系统输出打印(“体育赛事(50米/100米/400米/尤文林/铁饼):”;
sportsEvent=in.next();
添加第(i)款;
InputParticipant i=新的InputParticipant(rollNumber、firstName、lastName、年龄、性别、sportsEvent);
迭代器disp=l.Iterator();
while(disp.hasNext()){
InputParticipant st=disp.next();
System.out.println(“卷号:+st.rollNumber+”\n名称:+st.firstName+“+st.lastName+”\n发件人:+st.gender+”\n管理:+st.age+“\n体育赛事:+st.sportsEvent”);
圣·易立性();
System.out.println(“--------------------------------------------------------”;
}
}
} 

因为您在循环中创建了新对象: 列表l=新的ArrayList()

试着这样做:

public static void main(String[] args) {
    List<InputParticipant> stud=new ArrayList<InputParticipant>();
    //List<InputParticipant> l=new ArrayList<InputParticipant>();

    Scanner in = new Scanner(System.in);
    while(true){
        System.out.println("Enter the Student details:");
        System.out.print("roll number:");
    rollNumber=in.nextInt();
    System.out.print("First name:");
    firstName=in.next();
    System.out.print("Last name:");
    lastName=in.next();
    System.out.print("age:");
    age=in.nextInt();
    System.out.print("gender:");
    gender=in.next();
    System.out.print("sports event(50meterrace/100meterrace/400meterrace/Juvelin/discus):");
    sportsEvent=in.next();
    stud.add(i);
    InputParticipant i = new InputParticipant(rollNumber, firstName, lastName, age, gender, sportsEvent);

    Iterator<InputParticipant> disp = l.iterator();
    while(disp.hasNext()){
        InputParticipant st=disp.next();
        System.out.println("Roll Number:"+st.rollNumber+"\nName: "+st.firstName+" "+st.lastName+"\nGender: "+st.gender+"\nAge: "+st.age+"\nSports Event:"+st.sportsEvent);
        st.elegibility();
        System.out.println("-----------------------------------------");
    }
    }
    } 
publicstaticvoidmain(字符串[]args){
列表螺柱=新的ArrayList();
//列表l=新的ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“输入学生详细信息:”);
系统输出打印(“卷号:”);
rollNumber=in.nextInt();
系统输出打印(“名字:”);
firstName=in.next();
系统输出打印(“姓氏:”);
lastName=in.next();
系统输出打印(“年龄:”);
年龄=in.nextInt();
系统输出打印(“性别:”);
性别=in.next();
系统输出打印(“体育赛事(50米/100米/400米/尤文林/铁饼):”;
sportsEvent=in.next();
添加第(i)款;
InputParticipant i=新的InputParticipant(rollNumber、firstName、lastName、年龄、性别、sportsEvent);
迭代器disp=l.Iterator();
while(disp.hasNext()){
InputParticipant st=disp.next();
System.out.println(“卷号:+st.rollNumber+”\n名称:+st.firstName+“+st.lastName+”\n发件人:+st.gender+”\n管理:+st.age+“\n体育赛事:+st.sportsEvent”);
圣·易立性();
System.out.println(“--------------------------------------------------------”;
}
}
} 

可能尝试使用Java POJO

在您的情况下,从扫描仪获取值后,创建一个新对象,然后将该对象添加到ArrayList中

i = new InputParticipant(rollNumber, firstName, lastName, age, gender, sportsEvent);
stud.add(i);

不确定为什么要在while循环中创建另一个ArrayList,因为while应该只用于收集输入。

可能尝试使用Java POJO

在您的情况下,从扫描仪获取值后,创建一个新对象,然后将该对象添加到ArrayList中

i = new InputParticipant(rollNumber, firstName, lastName, age, gender, sportsEvent);
stud.add(i);

不知道为什么要在while循环中创建另一个ArrayList,因为while应该只用于收集输入。

我真的无法帮助您修复代码,因为它有很多地方很奇怪<
public class Student {
public int rollNumber, age;
public String firstName, lastName, gender;
public Student(int rollNumber, String firstName, String lastName, int age, String gender) 
 {
   this.rollNumber = rollNumber;
   this.firstName = firstName;
   this.lastName = lastName;
   this.age = age;
   this.gender = gender;
  }
}