Zahl mit Komma an String hängen
lima-city → Forum → Programmiersprachen → Java
ablegen
anfang
aufruf
ausgabe
code
einbeziehen
ende
funktion
helfen
jemand
komma
letzte komma
null
reihenfolge
separaten schleife
stehen
string
uni
zahl
zeichen
-
Hallo.
Ich muss für die Uni eine Methode für die Klasse BinTree schreiben, die alle Zahlen aus einem Binärbaum, die durch 3 teilbar sind, in einen String packt und mit Komma trennt. Und zwar in der infix Reihenfolge. Das habe ich so erledigt:
String findeDurch3teilbareZahlen(){ String zahlen = ""; if (left != null){ zahlen = zahlen + left.findeDurch3teilbareZahlen(); } if (value % 3 == 0) { zahlen = zahlen + value + ", "; } if (right != null){ zahlen = zahlen + right.findeDurch3teilbareZahlen(); } return zahlen; }
Ein Teil der Aufgabe ist allerdings noch, dass am Anfang und ein Ende kein Komma stehen darf. Und da weiß ich nicht, wie ich das machen soll.
Ich würde mich freuen, wenn mir da jemand helfen kann.
Viele Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du könntest beim fertigen String das letzte Komma einfach wegschneiden.
Alternativ könntest du auch bei jedem Aufruf von findeDurch3teilbareZahlen() bevor du den String an den bestehenden anhängst das Komma anfügen, falls der bestehende String länger als 0 Zeichen ist und die Funktion mehr als 0 Zeichen zurückgegeben hat. Dadurch wird niemals ein Komma am Anfang oder Ende stehen. -
Das mit dem Komma an Anfang setzen, außer wenn der String leer ist, ist mir auch eingefallen. Ich habe es so umgesetzt:
if (value % 3 == 0) { if (zahlen == "") { zahlen = zahlen + value ; } else{ zahlen = zahlen + ", " + value ; } }
Also wenn "zahlen" leer ist, wird die erste Zahl ohne Komma angehangen. Wenn in "zahlen" aber schon etwas steht, wird vorher ein Komma gemacht. Allerdings klappt das bei mir nicht ganz. Diese Zahlen sind in meinem Binäbaum durch 3 teilbar: 513, 6, 18, 9. In der Reihenfolge müsste es auch ausgegeben werden. Mit dem obigen Code wird aber folgendes ausgegeben:
513, 618, 9
Also nach der 6 bzw vor der 18 wird kein Komma gemacht. Woran liegt das?
Beitrag zuletzt geändert: 9.1.2014 19:14:32 von ultimate-bravery -
Wie wärs mit
oderzahlen.length() == 0
? In diesem Fall kann der Vergleich aber sogar funktionieren…zahlen.equals("")
Außerdem darfst du nicht vergessen, dass da noch was drangehängt wird, und zwar dort, wo du die Funktion rekursiv aufrufst. -
Mhh ich probiere und probiere aber ich kriegs nicht hin. Weiß nicht genau wie ich die Rekursion da mit einbeziehen soll. Kannst du mir wohl helfen? Wäre echt cool.
Also am besten hats mit zahlen == "" geklappt. Bei zahlen.length() == 0 und zahlen.equals("") hat noch mehr gefehlt. -
Kannst du deine Zahlen nicht einfach zuerst ohne Kommas in ein Array ablegen und dann in einer separaten Schleife hinter jeden Eintrag, bis auf den letzten ein Komma einfügen?
z.B.
for(int i = 0; i<zahlen.size(); i++){
ausgabe += zahlen.get(i);
ausgabe += i < (zahlen.size()-1) ? ',' : '';
}
Beitrag zuletzt geändert: 10.1.2014 10:58:34 von hswlab -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage