2016-05-25 19 views
0

Ich habe Probleme Formatierung dies richtig:Java - Wie formatiert man eine Mischung aus Zeichenfolgen und Ganzzahlen mit printf(), um gleiche Länge in der Ausgabe zu erhalten?

 starting  mechanical cuchoo clock time [ 0:00:00], total drift = 0.00 seconds 
    after 1 day  mechanical cuchoo clock time [23:59:00], total drift = 60.00 seconds 

Die korrekte Formatierung:

starting mechanical cuckoo clock time [ 0:00:00], total drift = 0.00 seconds 
after 1 day mechanical cuckoo clock time [23:59:00], total drift = 60.00 seconds 

Ich versuchte dies und es funktioniert tatsächlich aber wird es einen besseren Weg?

System.out.printf("%60s", this.getClockType() + " cuchoo clock time [" + time.formattedReportedTime() + 
      "], " + "total drift = "); 

System.out.printf("%s", fmt.format(time.getTotalDrift()) + "\n"); 
+0

Zeigen Sie bitte Ihre Formatzeichenkette. Geben Sie eine Länge für das letzte numerische Feld (und wie) an? – Thilo

+0

Versuchen Sie diese https://sharkysoft.com/archive/printf/docs/javadocs/lava/clib/stdio/doc-files/specification.htm – Aradhna

+0

Ich fügte den Code hinzu, der es korrekt anzeigen lässt, aber gibt es einen besseren Weg zu gehen darüber. Das sieht so aus, als ob ich einmal die angegebene Länge "60" passiere, wird es wieder durcheinander gebracht – iAmtheDank

Antwort

0

Sie sollten dies überprüfen link heraus. Es ist der Formatter Class doc, es ist super nützlich!

+0

Danke! Es war sehr hilfreich – iAmtheDank

2

Hier ein kleiner Ausschnitt neben der Antwort von Caio.

String format = 
    "%12s mechanical cuckoo clock time [%8s], total drift = %5.2f seconds%n"; 
System.out.printf(format, "starting", "0:00:00", 0.0); 
System.out.printf(format, "after 1 day", "23:59:00", 60.0); 

Ausgang

starting mechanical cuckoo clock time [ 0:00:00], total drift = 0.00 seconds 
after 1 day mechanical cuckoo clock time [23:59:00], total drift = 60.00 seconds 
  • %12s - die (erste) Parameter wird als linker aufgefüllter String formatiert werden mit 12 Zeichen Breite
  • %8s - wie oben, der (zweite) Parameter mit 8 Zeichen
  • %5.2f - der (dritte) Parameter, der ein Fließkommatyp sein muss, wird mit einer Breite von 5 formatiert Charcaters und eine Genauigkeit von 2