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 =newHashMap<>();publicvoidpranlegen(){Praxis praxis =newPraxis();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);}publicvoidanlegen(){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
.
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.
publicclassPatient{privatePraxis praxis;// das ist bei dir momentan immer NULLpublicPatient(Praxis praxis){// du müsstest schon (bspw) die Praxis im Konstruktor übergebenthis.praxis = praxis;// und damit praxis initialisieren, damit es nicht mehr NULL ist}}// Anwenden kannst du es dann sopublicclassTest{publicstaticvoidmain(String[] args){Praxis p =newPraxis(..);Patient patient =newPraxis(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 newPatient();
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!