【发布时间】:2018-12-05 16:04:26
【问题描述】:
我有这段代码,它旨在从数组列表中获取 double 类型的值,并将它们增加一个百分比。
public class Company {
static ArrayList<Employee> employees;
public Company() {
Company.employees = new ArrayList<Employee>();
}
public ArrayList<Employee> getEmployees() {
return employees;
}
public void setEmployees(ArrayList<Employee> employees) {
Company.employees = employees;
}
public void increaseSalaries(double rate) {
if (rate <= 0.0) {
throw new IllegalArgumentException();
} else {
for (int i = 0 ; i < employees.size() ; i++) {
employees.get(i).increaseSalaries(rate);
}
}
}
public static void main(String[] args) {
Company businesstown = new Company();
HourlyEmployee george;
MonthlyEmployee ambrose;
george = new HourlyEmployee("George", "McClellan", "1537", 1.04);
ambrose = new MonthlyEmployee("Ambrose", "Burnside", "1536", 741.0);
businesstown.getEmployees().add(george);
businesstown.getEmployees().add(ambrose);
double increase = 20.0;
System.out.println(businesstown);
businesstown.increaseSalaries(increase);
System.out.println(businesstown);
}
}
我想在增加之前和之后打印出数组列表中的对象,但我不确定如何。当前的打印命令是占位符,因为我知道它们不正确。我尝试过其他方法,例如
for (Object[] array : list) {
System.out.println(Arrays.toString(array));
}
但这没有奏效。在这种情况下什么会起作用?
【问题讨论】:
-
哦,男孩,您的代码有很多很多问题。该字段最好不是静态的。这种解决该领域的“Company.employees”非常令人困惑。另一方面,它有点好,因为它强调“它是一个静态领域”。但正如所说:该领域不应该是静态的。然后使用“List”作为类型,例如,当您执行
List<Whatever> things = new ArrayList<>()时,您只关心 ArrayList。然后:读一本好书。任何好书/教程都描述了如何迭代 Java 列表的问题。无需猜测如何做到这一点。 -
另一件事:只需在您的 Employee 类上实现一个合理的
toString()方法。然后你就可以打印这些对象,并且你会得到很好的人类可读的输出。
标签: java arraylist printing main