我想按字母顺序打印"medewerkers“(英语雇员)列表中的人员。
我做了一个按字母顺序排列的compareTo方法,这个方法设置在一个叫做"Persoon“(英文中的person)的抽象类中。我想打印"Bedrijf“类的ToString方法,这必须按字母顺序打印数组中的名称。但我想不出该怎么做。
我的程序结构如下:
我有一个类“Bedrijf”(英语公司),其中公司的所有员工都被设置在一个数组列表中。我还有一个抽象类"Persoon“(英语中的person),因为一家公司有人员。在这些类中,我定义了不同的函数,比如manager、normal employee (在我的程序中是Werknemer)等等。现在所有这些人都设置在"Bedrijf“类的数组列表中,我想按字母顺序打印我在数组列表中设置的所有姓名。
我的主类通过Bedrijf的"neemInDienst“方法将人添加到lisy中:
public class Main {
/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args) {
Bedrijf bedrijf = new Bedrijf("HvA");
Werknemer w = new Werknemer(1200.00, "Jantine Jansen");
bedrijf.neemInDienst(w);
Werknemer we = new Werknemer(1300.00, "Piet Pietersen");
bedrijf.neemInDienst(we);
Vrijwilliger v = new Vrijwilliger("Guus Goedhart");
bedrijf.neemInDienst(v);
v.huurIn(10);
Manager m = new Manager(10000.00, "Brigitte Baas");
bedrijf.neemInDienst(m);
m.kenBonusToe(750);
Manager a = new Manager(10000.00, "Dirk Teur");
bedrijf.neemInDienst(a);
a.kenBonusToe(1200);
Zzper z = new Zzper(120, "Beun Haas");
bedrijf.neemInDienst(z);
z.huurIn(40);
// print de toString van het bedrijf
System.out.println(bedrijf);
// print alle inkomsten van de personen in het bedrijf (alle functies)
bedrijf.printInkomsten();
// print de aantal van de managers
System.out.println("\nAantal in management: " + bedrijf.aantalManagers());
}
}类Bedrijf,这里是arraylist,也是我想要打印的那个:
public class Bedrijf {
private String naam;
/**
* lijst van alle Medewerkers.
*/
protected List<Persoon> medewerkers = new ArrayList<>();
//Magic numbers
static private int MIN_MANAGERS = 0;
/**
* Instantiates a new Bedrijf.
*
* @param naam the naam
*/
public Bedrijf(String naam) {
this.naam = naam;
}
/**
* Print inkomsten.
*
*/
public void printInkomsten() {
System.out.println("Inkomsten van alle personen:\n");
for (Persoon p : medewerkers) {
if (p.berekenInkomsten() == 0) {
System.out.println(p.naam + "," + " bedankt voor uw inzet!"); // Voor de vrijwilligers
} else {
System.out.println(p.naam + "," + " inkomsten: " + p.berekenInkomsten()); // Voor alle andere personen
}
}
}
/**
* Aantal managers int.
*
* @return the int
*/
public int aantalManagers() {
int managers = MIN_MANAGERS;
for (Persoon person : medewerkers) {
if (person instanceof Manager) {
managers++;
}
}
return managers;
}
/**
* Neemin dienst.
*
* @param persoon the persoon
*/
public void neemInDienst(Persoon persoon) {
this.medewerkers.add(persoon);
}
@Override
public String toString() {
String a = "Bedrijf " + naam + " heeft " + medewerkers.size() + " mederwerkers:\n";
StringBuilder namen = new StringBuilder();
for (Persoon x : medewerkers) {
namen.append(x.naam).append("\n");
}
return a + namen;
}
}抽象类"Persoon“
public abstract class Persoon implements Comparable<Persoon> {
String naam;
/**
* Instantiates a new Persoon.
*
* @param naam the naam
*/
public Persoon(String naam) {
this.naam = naam;
}
/**
* Bereken inkomsten.
*
* @return the double
*/
public abstract Double berekenInkomsten();
/**
* compareto method om int terug te geven voor alfabetische volgorde
*
* @param other
* @return laagste int is eerste in de alfabetische volgorde
*/
@Override
public int compareTo(Persoon other){
return this.naam.compareTo(other.naam);
}
@Override
public String toString() {
return this.naam;
}
}也许如果它更容易阅读它所涉及的函数:
@Override
public String toString() {
String a = "Bedrijf " + naam + " heeft " + medewerkers.size() + " mederwerkers:\n";
StringBuilder namen = new StringBuilder();
for (Persoon x : medewerkers) {
namen.append(x.naam).append("\n");
}
return a + namen;
}我对Java还很陌生,所以如果有人能帮上忙那就太好了!提前感谢!
发布于 2020-03-16 04:35:03
在评论的帮助下修复了这个问题。
添加:
Collections.sort(medewerkers)在to string方法中,在循环遍历列表以按字母顺序打印所有名称之前。
https://stackoverflow.com/questions/60687074
复制相似问题