Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
hab da ne kleine Frage.
Undzwar will ich einen Schlüssel von meiner Hashmap mit einem Integer Objekt vegleichen, um das Objekt daraufhin in eine Arraylist zu stecken..
Nur weiß ich leider nicht wie das geht und hab auch überall gesucht und finde nichts..
Java:
Map <Integer, Praxis> praxisMap = new HashMap<>();
public void pranlegen() {
Praxis praxis = new Praxis();
System.out.println("Name der Praxis: ");
praxis.name = sc.next();
System.out.println("Nummer der Praxis: ");
praxis.praxisnr = sc.nextInt();
System.out.println("Gründung der Praxis: ");
praxis.gruendung = sc.next();
praxisMap.put(praxis.praxisnr, praxis);
}
public void anlegen() {
System.out.println("Patientennummer: ");
patient.pnr = sc.nextInt();
System.out.println("Name des Patienten: ");
patient.name = sc.next();
System.out.println("Erstbesuch: ");
patient.erstbesuch = sc.next();
System.out.println("Praxis?");
patient.praxis.praxisnr = sc.nextInt(); //Hier löst die Exception aus
praxisMap.get(praxis.praxisnr);
praxis.patient.add(patient);
}
Ich hab in meiner Methode pranlegen() die Praxisnr in meine Hashmap eingefügt und in der anlegen() Methode lege ich einen Patienten an und will ihn einer Praxis zuweisen. Nur wenn ich das Programm laufen lasse, eine Praxis anlege und daraufhin einen Patienten, löst es bei mir eine Exception aus bei der mich die Konsole nach der PraxisNr fragt, aber ich habe keine Ahnung wieso. Ich denke mal, dass ich die patient.praxis.praxisnr erst mit meiner Hashmap vergleichen muss aber hab echt keine Ahnung
Also ich habe eine Klasse Praxis und eine Klasse Patient.
In der Klasse Patient habe ich noch zusätzlich die Klasse Praxis mit
Java:
Praxis praxis;
aufgerufen.
In der Klasse Praxis hab ich noch eine ArrayList
Java:
ArrayList<Patient> patienten = new ArrayList <Patient>();
.
In meiner Main Klasse erstelle ich von Praxis und Patient eine Objekt (Praxis praxis = new Praxis(); ) und zusätzlich eine HashMap praxisMap, und habe dann jeweils eine Methode bei der ich diese anlege.
Du sagst selbst, dass jeder Patient ein Praxis-Objekt besitzt - erklärst aber nirgends wo/wie dieses Objekt initialisiert wird.
Irgendwo musst du doch die Praxis zuweisen.
Du sagst selbst, dass jeder Patient ein Praxis-Objekt besitzt - erklärst aber nirgends wo/wie dieses Objekt initialisiert wird.
Irgendwo musst du doch die Praxis zuweisen.
public class Patient {
private Praxis praxis; // das ist bei dir momentan immer NULL
public Patient(Praxis praxis) { // du müsstest schon (bspw) die Praxis im Konstruktor übergeben
this.praxis = praxis; // und damit praxis initialisieren, damit es nicht mehr NULL ist
}
}
// Anwenden kannst du es dann so
public class Test {
public static void main(String[] args) {
Praxis p = new Praxis(..);
Patient patient = new Praxis(p); // ab dem Zeitpunkt ist patient.praxis nicht mehr null!
}
}
Das ganze ist nur ein Beispiel um dir das Problem zu verdeutlichen. Kann gut sein dass du es für eine Klassenstruktur etwas abändern musst.
Also in deiner Main-Klasse erstellst du an folgender Stelle einen neuen Patienten mit dem default-Konstruktor. Das bedeutet, dass das Attribut praxis deines Patientens null bleibt.
Java:
Patient patient new Patient();
Jetzt wird die Methode anlegen() aufgerufen und du versuchst in der Zeile
Java:
patient.praxisnr = sc.nextInt();
auf die Praxisnummer des Praxisobjektes deines Patienten zuzugreifen. Wie oben aber bereits geschildert, ist praxis null und dadurch fliegt die Exception.
Was du also machen müsstest ist vorher das Praxis-Objekt zu initialisieren. Ob du das schon beim erstellen des Patienten machst (indem du bspw. ein dummy-Praxis-Objekt übergibst dessen Werte du später ändern kannst) oder erst in der Methode anlegen() eine neue Praxis erstellst ist relativ egal. Wichtig ist, dass dies geschieht bevor du über den Patienten auf die Praxis zugreifen willst.
Was du also machen müsstest ist vorher das Praxis-Objekt zu initialisieren. Ob du das schon beim erstellen des Patienten machst (indem du bspw. ein dummy-Praxis-Objekt übergibst dessen Werte du später ändern kannst) oder erst in der Methode anlegen() eine neue Praxis erstellst ist relativ egal. Wichtig ist, dass dies geschieht bevor du über den Patienten auf die Praxis zugreifen willst.
könntest du mir da ein kleines Code-Beispiel zeigen? Ich verstehe zwar was du meinst aber weiß nicht was ich machen soll.. wie schon gesagt bin frischer Anfänger.. Wäre echt nett!