Hallo zusammen ! Ich habe angefangen Java Programmieren zu lernen und hänge ein bisschen. Ich habe ein Beispiel wo ich mich nicht auskenne. Kann mir da jemand helfen, wie das zu programmieren geht ? Bin im Moment bei Dynamischen Datenstrukturen.
Hier das beispiel:
Implementieren Sie ein Verzeichnis der 500 größten Unternehmen der Welt als sortierte verkettete Liste. Lesen Sie die Unternehmen mit Umsatz und Gewinn aus der Datei top500.txt ein (Zahlen in Mio. USD; Quelle: Fortune Global 500 von 2021). Die Datei ist absteigend sortiert nach Umsatz und hat folgendes Format:
rank ";" name ";" revenue ";" profit
Dabei ist rank der Rang des Unternehmens als Zahlen von 1 bis 500, name ein beliebiger String für den Namen des Unternehmens, revenue und profit Dezimalzahlen für Umsatz und Gewinn. Die einzelnen Elemente sind durch Strichpunkte getrennt. Beispielsätze sind
1;"Walmart";559151;13510 2;"State Grid";386617.7;5580.4 3;"Amazon";386064;21331 4;"China National Petroleum";283957.6;4575.2
Erzeugen Sie zunächst eine Klasse Company (Datei Company.java), welche Namen, Umsatz und Gewinn eines Unternehmens speichert. Lesen Sie die Daten der Unternehmen aus der Datei ein und erzeugen Sie für jedes Unternehmen ein Objekt dieser Klasse. Wandeln Sie dabei die Zahlen in double-Werte in USD um.
class Company { ... }
Implementieren Sie damit eine verkettete Liste CompanyList (Datei CompanyList.java), um die Objekte nach dem Gewinn (nicht Umsatz) aufsteigend sortiert zu speichern. Für die Knoten der verketteten Liste verwenden Sie eine weitere Klasse CompanyNode (Datei CompanyNode.java), die ein Company-Objekt sowie eine Referenz auf den nächsten Knoten enthält:
class CompanyNode {
Company company; // content of the node
CompanyNode next; // pointer to the next node
CompanyNode(Company company) { // constructor
this.company = company; this.next = null; }
}
class CompanyList {
CompanyNode head; // pointer to the first node of the list
CompanyList() { ... } ... }
Lesen Sie nun in der Methode main Ihres Hauptprogramms – diese implementieren Sie in einer neuen Klasse CompanyManager (Datei CompanyManager.java) – eine Zeile nach der anderen aus der Datei top500.txt, erzeugen für jedes Unternehmen ein Objekt der Klasse Company und fügen Sie das Objekt sortiert in die verkettete Liste ein. Die Klasse CompanyList sollte dafür folgende Methoden bereitstellen:
• void insert(Company company): Fügt ein Unternehmen sortiert in die Liste ein.
• int getSize(): Liefert die Anzahl der Unternehmen, die in der Liste gespeichert sind. Achten Sie auf eine effiziente Implementierung!
• Company get(int index): Liefert das Unternehmen an der Stelle index, oder null falls index außerhalb des erlaubten Bereichs liegt (d.h. index < 0 oder index >= getSize()).
• double getRevenue(String companyName): Liefert den Umsatz des Unternehmens mit dem Namen companyName, oder -1 wenn kein Unternehmen mit diesem Namen vorhanden ist.
• double getProfit(String companyName): Liefert den Gewinn des Unternehmens mit dem Namen companyName, oder -1 wenn kein Unternehmen mit diesem Namen vorhanden ist.
• double getMeanProfit(): Liefert den mittleren Gewinn (arithmentisches Mittel) aller Unternehmen in der Liste. • Company[] toArray(): Liefert ein Array mit allen Unternehmen der Liste, aufsteigend sortiert nach dem Gewinn.
Hier das beispiel:
Implementieren Sie ein Verzeichnis der 500 größten Unternehmen der Welt als sortierte verkettete Liste. Lesen Sie die Unternehmen mit Umsatz und Gewinn aus der Datei top500.txt ein (Zahlen in Mio. USD; Quelle: Fortune Global 500 von 2021). Die Datei ist absteigend sortiert nach Umsatz und hat folgendes Format:
rank ";" name ";" revenue ";" profit
Dabei ist rank der Rang des Unternehmens als Zahlen von 1 bis 500, name ein beliebiger String für den Namen des Unternehmens, revenue und profit Dezimalzahlen für Umsatz und Gewinn. Die einzelnen Elemente sind durch Strichpunkte getrennt. Beispielsätze sind
1;"Walmart";559151;13510 2;"State Grid";386617.7;5580.4 3;"Amazon";386064;21331 4;"China National Petroleum";283957.6;4575.2
Erzeugen Sie zunächst eine Klasse Company (Datei Company.java), welche Namen, Umsatz und Gewinn eines Unternehmens speichert. Lesen Sie die Daten der Unternehmen aus der Datei ein und erzeugen Sie für jedes Unternehmen ein Objekt dieser Klasse. Wandeln Sie dabei die Zahlen in double-Werte in USD um.
class Company { ... }
Implementieren Sie damit eine verkettete Liste CompanyList (Datei CompanyList.java), um die Objekte nach dem Gewinn (nicht Umsatz) aufsteigend sortiert zu speichern. Für die Knoten der verketteten Liste verwenden Sie eine weitere Klasse CompanyNode (Datei CompanyNode.java), die ein Company-Objekt sowie eine Referenz auf den nächsten Knoten enthält:
class CompanyNode {
Company company; // content of the node
CompanyNode next; // pointer to the next node
CompanyNode(Company company) { // constructor
this.company = company; this.next = null; }
}
class CompanyList {
CompanyNode head; // pointer to the first node of the list
CompanyList() { ... } ... }
Lesen Sie nun in der Methode main Ihres Hauptprogramms – diese implementieren Sie in einer neuen Klasse CompanyManager (Datei CompanyManager.java) – eine Zeile nach der anderen aus der Datei top500.txt, erzeugen für jedes Unternehmen ein Objekt der Klasse Company und fügen Sie das Objekt sortiert in die verkettete Liste ein. Die Klasse CompanyList sollte dafür folgende Methoden bereitstellen:
• void insert(Company company): Fügt ein Unternehmen sortiert in die Liste ein.
• int getSize(): Liefert die Anzahl der Unternehmen, die in der Liste gespeichert sind. Achten Sie auf eine effiziente Implementierung!
• Company get(int index): Liefert das Unternehmen an der Stelle index, oder null falls index außerhalb des erlaubten Bereichs liegt (d.h. index < 0 oder index >= getSize()).
• double getRevenue(String companyName): Liefert den Umsatz des Unternehmens mit dem Namen companyName, oder -1 wenn kein Unternehmen mit diesem Namen vorhanden ist.
• double getProfit(String companyName): Liefert den Gewinn des Unternehmens mit dem Namen companyName, oder -1 wenn kein Unternehmen mit diesem Namen vorhanden ist.
• double getMeanProfit(): Liefert den mittleren Gewinn (arithmentisches Mittel) aller Unternehmen in der Liste. • Company[] toArray(): Liefert ein Array mit allen Unternehmen der Liste, aufsteigend sortiert nach dem Gewinn.