ich hänge zur Zeit an dem Problem das ich nicht wirklich weiß wie ich eine nicht statische Methode einer anderen Klasse richtig aufrufe. Schon ein paar Dinge versucht bisher ohne Erfolg.
Ich weiß das man ein Objekt braucht.
Diese möchte ich nun aufrufen ich habe vorher schon der Klasse Konto eine Kontonummer zugewiesen.
Welche diese Methode sich dann holt, hoffe ich zumindest.
Nun ist meine Frage wie rufe ich diese Methode "kontoHinzufuegen" in der Main einfach auf das sie mir den Wert ausgibt insofern das überhaupt stimmt was ich da bisher habe^^
Vielleicht sieht ja jemand warum x hier = -1 ist
Habe vorher in einer anderen Methode nämlich eine Kontonummer hinzugefügt und versuche gerade diese dann wieder zu löschen, was bisher aber nicht funktioniert.
Vielleicht ist das adden doch falsch, bin mir nicht sicher, nur warum würde er wenn ich diese 2x ausführe -1 liefern und somit müsste das speichern ja funktioniert haben.
bei der 1. Mehthode gibt er -1 wieder wenn er die Nummer schon gespeichert hat. Was funktionierte.
Bei der Löschen Methode aber findet er den Index dazu nicht.
Somit kommt immer False.
Java:
publicbooleankontoLoeschen(int kontonummer){int x =findeKontoIndex(kontonummer);// hier der Aufruf der -1 liefertif(x >0){
x= x -2;
konten.remove(x);
konten.remove(x+1);
konten.remove(x+2);
konten.remove(x+3);if(findeKontoIndex(kontonummer)==-1)returntrue;System.exit(0);}returnfalse;}privateintfindeKontoIndex(int kontonummer){for(int i =0;i<konten.size();i++){if(konten.get(i).getKontonummer()== kontonummer){return i;}}return-1;}}
hatte sich alles schon geklärt
das war nur weil ich dachte der würde nachdem true noch false liefern da das ohne else war aber geht ja auch ohne
allgemein ist der Code da nicht annähernd mehr aktuell ^^
Habe mal etwas weiter gearbeitet an dem Programm und stoße mal wieder an meine Grenzen bezüglich einer Übergabe.
Damit möchte ich die in der oben erstellten Methode gespeicherten Objekte ausgeben.
In dem Fall nur die kontonummer und den nachnamen
Java:
publicStringtoString(){String x1="";String x2="";for(int i =0; i < konten.size();i++){
x1=Integer.toString(konten.get(i).getKontonummer());//x = konten.get(i).getbesitzer();
x2= x2 +" "+ x1;}return x2;}
Die klasse Konto sieht so aus. Diese Werte habe ich in einer Liste gepeichert.
Klasse Person besitzt den Vor-und Nachnamen und den Nachnamen möchte ich ausgeben.
Leider weiß ich nicht wie ich nun da besitzer ja die Klasse Person verwendet das ausdrücken soll.
Vielleicht hat jemand auch noch eine Idee für eine bessere Speicherung in einen String, der sieht bisher nicht so schön aus aber funktioniert immerhin schon mal für die Kontonummern und hat auch erstmal nicht Priorität.
Vor- und Nachnamen hast du ja wahrscheinlich als private Variablen in deiner Personen-Klasse angelegt. Eine Getter-Methode in dieser Klasse kann dir die Namen liefern:
Java:
publicStringgetVorname(){return vorname;// oder wie auch immer deine variable heißt}// das ganze analog dann für den nachnamen
Diese Methode kannst du jetzt auf einer Instanz deiner Personen-Klasse aufrufen:
Java:
String ergebnis = person.getVorname();// wenn person eine Instanz einer Personen-Klasse ist
Den Rest solltest du dir selber zusammenbasteln können
hm da meint er er kann keinen statischen Aufruf bei einer nicht statischen Methode machen
Genauso muss ich das ja auch noch abhängig von der Liste machen, so wie bei der Kontonummer
Verstehe ich nicht ganz. Du hast doch schon das jeweils richtige Konto Objekt. Dieses hat seinen Besitzer als Attribut (Person Objekt). Da braucht doch die Konto Klasse nur eine Getter Methode die das Person Objekt return't.
Eine Frage hätte ich aber noch ist zwar nicht passend zum Thema aber vielleicht hilft mir ja trotzdem jemand
Warum funktionieren returns bei Bedingungen nicht?
ich habe zum Beispiel eine Methode welche diese beiden Bedingungen überprüft und ein Boolean Wert returnen soll!
Damit ist ja alles abgedeckt warum will er trotzdem noch ein return Wert wenn er zu diesem eigentlich nie kommt, habe den einfach gesetzt aber an sich ist dieser ja Sinnlos.
Java:
if( x <0)returnfalse;
Java:
if(absender.getKontostand()== x && empfaenger.getKontostand()== y)returntrue;
Und wie macht man das sonst, heißt das es fehlt noch eine Bedingung oder soll ich das einfach so lassen habe einfach nach den Bedingungen return false gemacht
dadurch funktionierte bisher eigentlich alles
publicbooleanueberweisen(Konto absender,Konto empfaenger,double betrag){double x = absender.getKontostand();double y = empfaenger.getKontostand();
x = x - betrag;if( x <0)returnfalse;
absender.setKontostand(x);
y = y + betrag;
empfaenger.setKontostand(y);if(absender.getKontostand()== x && empfaenger.getKontostand()== y)returntrue;returnfalse;}
ich könnte wahrscheinlich einfach die 2. Bedingung weglassen und return true machen aber fand das irgendwie besser, mit einer Überprüfung.
Grundsätzlich ist nichts verkehrt daran, einen Default Rückgabewert zu definieren.
In Deinem Fall könnte, wenn es sonst keine anderen Fälle zu berücksichtigen gibt eine Zeile ausreichen:
Java:
return x >=0&& absender.getKontostand()== x && empfaenger.getKontostand()== y;
Das Problem war warum ich 2 genommen habe, das er ja die Überweisung dann nicht machen soll.
Es sollte ja kein negativer Wert auf dem Konto vorhanden sein. Und wenn ich am Ende nur überprüfe ob die Überweisung korrekt war,so wie du sie geschrieben hast, hat er die Werte ja trotzdem geändert.
Da lag mein Problem.
Aber mit dem return anstatt der Bedingung war gut.
habs jetzt so gemacht
oben der ergibt nachwievor false so spar ich mir einen return wert.
dieser ergibt ja immer true
Java:
return absender.getKontostand()== x && empfaenger.getKontostand()== y;