Hallo Zusammen,
Ich habe 3 Klassen (Student, Kurs, Main) erstellt um entsprechende Objekte zu erstellen. Die Infos über Studenten sollen in eine Hashmap gelegt werden.
Folgendes Problem: Die Klasse Student besitzt eine Arraylist um die einzelnen Kurse den Studenten zuzuweisen. Am ende soll ich den Namen des Studenten mit den meisten Kursen ausgeben.
Ich habe mir überlegt dies über eine Arraylist zu machen die den Size-Wert der einzelnen Arraylists der Studenten speichert, was nicht funktioniert da ich nicht auf den Namen des Studenten zugreifen kann.
Habt ihr Vorschläge?
Ich habe 3 Klassen (Student, Kurs, Main) erstellt um entsprechende Objekte zu erstellen. Die Infos über Studenten sollen in eine Hashmap gelegt werden.
Folgendes Problem: Die Klasse Student besitzt eine Arraylist um die einzelnen Kurse den Studenten zuzuweisen. Am ende soll ich den Namen des Studenten mit den meisten Kursen ausgeben.
Ich habe mir überlegt dies über eine Arraylist zu machen die den Size-Wert der einzelnen Arraylists der Studenten speichert, was nicht funktioniert da ich nicht auf den Namen des Studenten zugreifen kann.
Habt ihr Vorschläge?
Java:
import java.util.*;
public class Main {
public static void main(String[] args) {
//Studenten
Student s1 = new Student(224872, "Alfons", "Mueller");
Student s2 = new Student(221256, "Alfred", "Schuster");
Student s3 = new Student(284512,"Michael", "Klein");
//Kurse
Kurs k1 = new Kurs ("Germanistik", "Leopold Adam");
Kurs k2 = new Kurs ("Wirtschaft","Knecht König");
Kurs k3 = new Kurs("Thermodynamik","Heinz Baumann");
Kurs k4 = new Kurs ("Informatik","Karl Laue");
//Hashmap die Infos der Studenten mit einer Nummer, hier matrnr verknüpft
Map<Integer, Student> studenten = new HashMap<>();
studenten.put(s1.matrikelnummer, s1);
studenten.put(s2.matrikelnummer, s2);
studenten.put(s3.matrikelnummer, s3);
//in die einzelnen arraylists der Studentenobjekte, Kurse legen
s1.kurse.add(k1); s1.kurse.add(k2); s1.kurse.add(k3);
s2.kurse.add(k4);
s3.kurse.add(k1); s3.kurse.add(k4);
//Variable, nimmt die Benutzereingabe auf
int eingabe;
//Scanner für Benutzereingabe
Scanner input = new Scanner(System.in);
System.out.println("Geben Sie eine Matrikelnummer ein: ");
//weist der variablen eingabe den durch Scanner eingelesenen Wert zu
eingabe=input.nextInt();
//Überprüfen ob Matrilenummer vorhanden und ausgabe
if (studenten.containsKey(eingabe)) {
System.out.println("Matrikelnummer: "+ studenten.get(eingabe).matrikelnummer
+"\nName : "+ studenten.get(eingabe).name
+"\nVorname : "+ studenten.get(eingabe).vorname+"\n"
+"\nBelegte Kurse : ");
//Kurse nach Name Sortieren
Collections.sort(studenten.get(eingabe).kurse, new KurseSortieren());
//durch Kurse loopen und ausgeben, sortiert
for (Kurs k: studenten.get(eingabe).kurse){
System.out.println(k.name+", "+k.dozent);
}
}
else{
System.out.println("Matrikelnummer nicht bekannt!");
}
System.out.println("------------------------------------------------");
//Gesamte Hashmap ausgeben
for(Integer key : studenten.keySet())
{
System.out.println("Matrikelnummer: "+ studenten.get(key).matrikelnummer
+"\n"+"Name : "+ studenten.get(key).name
+"\n"+"Vorname : "+ studenten.get(key).vorname+"\n"
+"\n"+"Belegte Kurse : ");
for (Kurs k: studenten.get(key).kurse){
System.out.println(k.name+", "+k.dozent);
}
System.out.println("------------------------------------------------");
}
ArrayList<Integer> anzahlKurse = new ArrayList<>();
anzahlKurse.add(s1.kurse.size());
anzahlKurse.add(s2.kurse.size());
anzahlKurse.add(s3.kurse.size());
int maxKurse = Collections.max(anzahlKurse);
System.out.println(maxKurse);
----------------------------------------------------------------------
public class Student {
//Attribute
protected int matrikelnummer;
protected String vorname;
protected String name;
//Arraylist für Kurse
ArrayList<Kurs> kurse = new ArrayList<Kurs>();
//Konstruktor
public Student(int matrnr, String vorname, String name){
this.matrikelnummer=matrnr;
this.vorname=vorname;
this.name=name;
}
}
---------------------------------------------------------------------
public class Kurs {
//Attribute
protected String name;
protected String dozent;
//Arraylist für Studenten
ArrayList<Student> studenten;
//Konstruktor
public Kurs(String name, String dozent) {
this.name=name;
this.dozent=dozent;
}
//toString Methode wird überschrieben um den Namen auszugeben
public String toString(){
return name;
}
}
-------------------------------------------------------------------
public class KurseSortieren implements Comparator<Kurs>{
public int compare (Kurs k1, Kurs k2) {
return k1.name.compareTo(k2.name);
}
}