Wie kann ich einem StringBuilder einen int Wert formatiert hinzufügen?

Geek

Mitglied
Wenn ich folgendes ausführe:
Java:
StringBuilder sb = new StringBuilder();
        int n = 5;
        sb.append(n);
        sb.append("\n");
        System.out.println(sb);
        n = 10;
        sb.append(n);
        sb.append("\n");
        System.out.println(sb);

Dann erhalte ich folgende Ausgabe:
Code:
5
10

Die 5 wird hierbei leider an der ersten Position ausgegeben, was ich aber gerne hätte ist,
dass sie Ausgabe ein Spacing berücksichtigt, so dass folgende Ausgabe erfolgt:
Code:
 5
10

Gibt es dafür für den StringBuilder also irgendeine Formatierungsfunktion oder muss ich mir so etwas umständlich selber bauen?
 
Meines Wissens nach gibt es so was für den StringBuilder nicht, aber ist ja schnell selbst geschrieben. Allerdings müsstest du dann mit Chars bzw Strings arbeiten, sogenanntes Padding durchführen. In dem Fall auffüllen durch Leerzeichen am Anfang.
 
Okay, ich denke ich habe eine Lösung gefunden, allerdings wird hier der int Wert erst in einen String umgewandelt und erst dann dem StringBuilder hinzugefügt.
Eine Methode, das gleiche direkt auf den StringBuilder anzuwenden habe ich noch nicht herausgefunden:

Java:
        StringBuilder sb = new StringBuilder();
        int n = 5;
        sb.append(String.format("%2d", n));
        sb.append("\n");
        System.out.println(sb);
        n = 10;
        sb.append(String.format("%2d", n));
        sb.append("\n");
        System.out.println(sb);

Falls hier jemand eine bessere Idee hat, dann würde ich die gerne wissen.
 
Ich vermute einfach mal, dass der StringBuilder nicht umsonst StringBuilder heißt. Dass er da dann keine direkten Methoden für int-Werte anbietet, dürfte nicht all zu enttäuschend sein.

Deine Lösung ist doch gut so, was stört dich denn da?
 
https://docs.oracle.com/javase/7/do...format(java.lang.String, java.lang.Object...)
https://docs.oracle.com/javase/7/do...ocale, java.lang.String, java.lang.Object...)
Nachzulesen ist das dann alles im Formatter
https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
String#format() ist ein ziemlich mächtiges Werkzeug.
z. B.
"Duke's Birthday: %1$tm %1$te,%1$tY", c
allgemein
%[argument_index$][flags][width][.precision]conversion
Einen konkreten Hint kann ich dir aber nicht geben, etwas Recherche. 🙂

Edit: Schade, das String#format() hier gar nicht erwähnt wurde, ist doch wichtig.
 
Achso, selektives Lesen, nicht den ganzen Thread Lesen...

Bleibt zu sagen, das StringBuilder ohnehin echte Strings hinzugefügt werden.

Nur die effektive/effiziente Konkatenation selbiger sieht anders aus.

Btw.: Ihr werdet schon sehen, was ihr durch euer missbilligendes Verhalten mir gegenüber habt. 😀
 

Zurück
Oben