2016-05-08 5 views
2

Ich stehe vor einem seltsamen Problem, wenn ich die Methode printf verwende, um Werte in eine Textdatei mit Java zu schreiben, und das Ergebnis ist wirklich schlecht, ich konsultierte einige Java-Dokumentation und schlägt vor, dass ich dieJava Textdatei werid Ausgabe Format

Formatierung
("%-20s %-20s %-20s %-20s %-20s %-20s%n", 

Und das Ergebnis ist wirklich nicht gut

for (int i=0 ; i<array.length ; i++) 
    { 
     texfile.printf("%-20s %-20s %-20s %-20s %-20s %-20s%n", array[i].getName().getName(), array[i].getTittle() , array[i].getCodeISBN() , array[i].getDate() ,array[i].getPrice() , array[i].getNum()); 
     book++; 
    } 

enter image description here

, was ich falsch mache?

Antwort

2

Es sieht aus wie ein von getName().getName() oder getTittle() ein String mit einer Länge von mehr als 20 Zeichen über die angegebene Breite Rückkehr nicht durch java.io.PrintStream.printf() getrimmt. Von der java.util.Formatter Javadoc: "Die Breite ist die minimale Anzahl von Zeichen, die in die Ausgabe geschrieben werden."

1

Sie können die Whitespaces mit trim() Methode in String entfernen. versuche es mit dem untenstehenden Ansatz. Ich nehme an, dass Ihr getters return Strings.

texfile.printf("%-20s %-20s %-20s %-20s %-20s %-20s%n", array[i].getName().getName().trim(), array[i].getTittle().trim() , array[i].getCodeISBN().trim() , array[i].getDate().trim() ,array[i].getPrice().trim() , array[i].getNum().trim());