kostenloser Webspace werbefrei: lima-city


Zahl mit Komma an String hängen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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.
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    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
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wie wärs mit
    zahlen.length() == 0
    oder
    zahlen.equals("")
    ? In diesem Fall kann der Vergleich aber sogar funktionieren…

    Außerdem darfst du nicht vergessen, dass da noch was drangehängt wird, und zwar dort, wo du die Funktion rekursiv aufrufst.
  6. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    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.
  7. 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
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!