【问题标题】:Dynamically fill in an ArrayList with objects用对象动态填充 ArrayList
【发布时间】:2015-05-17 06:56:10
【问题描述】:

我有抽象类 Human,它由其他两个类 Student 和 Worker 扩展。我正在尝试填写两个数组列表。 Student 类型的 ArrayList 和 Worker 类型的 ArrayList 是动态的。

public abstract class Human {

private String fName = null;
private String lName = null;

public String getfName() {
    return fName;
}

public Human(String fName, String lName) {
    super();
    this.fName = fName;
    this.lName = lName;
}

public void setfName(String fName) {
    this.fName = fName;
}

public String getlName() {
    return lName;
}

public void setlName(String lName) {
    this.lName = lName;
}

}

public class Student extends Human {

private String grade = null;

public Student(String fName, String lName, String grade) {
    super(fName, lName);
    this.grade = grade;
}

public String getGrade() {
    return grade;
}

public void setGrade(String grade) {
    this.grade = grade;
}

}

public class Worker extends Human {

private int weekSalary = 0;
private int workHoursPerDay = 0;

public Worker(String fName, String lName, int weekSalary, int workHoursPerDay) {
    super(fName, lName);
    this.weekSalary = weekSalary;
    this.workHoursPerDay = workHoursPerDay;
}

public int getWorkSalary() {
    return weekSalary;
}

public void setWorkSalary(int workSalary) {
    this.weekSalary = workSalary;
}

public int getWorkHoursPerDay() {
    return workHoursPerDay;
}

public void setWorkHoursPerDay(int workHoursPerDay) {
    this.workHoursPerDay = workHoursPerDay;
}

public int moneyPerHour() {
    return weekSalary / (5 * workHoursPerDay);
}

}

public class Program {

public static void main(String[] args) {

    ArrayList<Student> student = new ArrayList<>();
    ArrayList<Worker> worker = new ArrayList<>();
}

}

【问题讨论】:

  • 你的问题在哪里?
  • 动态?用什么数据?
  • 问题是我无法理解如何填写数组列表或只是一个简单的 Worker[] worker 类型的数组。因为当我创建一个实例时,如果 Worker 例如构造函数 ive made must be initialized with its parameters but i do not want to hard code them. Im 试图做这样的事情,但使用对象。 int arr[] ... 扫描仪输入 = new Scanner(System.in); int n = input.nextInt(); for (i = 0; i
  • 你需要接受用户的输入吗?
  • 我想用 Student 和 Worker 类型的对象填写列表。

标签: java oop arraylist


【解决方案1】:

当然,只需添加学生:

ArrayList<Student> students = new ArrayList<>(); // note: students
students.add(new Student("Jens", "Nenov", "A+"));

您可以为工人做几乎完全相同的事情。如果要使用循环,请执行以下操作:

for (int i=0; i<50; i++) {
    students.add(new Student("Jens"+i, "Nenov", "A+"));
}

这将创建一个新学生列表,他们的名字后面有不同的数字。但是,如果您想要不同的数据,则该数据需要来自某个地方。例如,您可能会从用户输入中获取数据:

Scanner input = new Scanner(System.in);
for ...
    System.out.println("Enter a first name:");
    String firstname = input.nextLine();
    ...
    students.add(new Student(firstname, lastname, grade));

【讨论】:

  • 是的,这是一个选项,但如果我想添加 25 名学生,我必须这样做 25 次。这就是为什么我想用循环来动态地做到这一点。但我不知道怎么做:(
  • 太棒了!我很高兴能帮上忙。祝你的程序好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多