Java: Einfacher pretty-printing?
Am Ende meiner Berechnungen, die ich drucken der Ergebnisse:
System.out.println("\nTree\t\tOdds of being by the sought author");
for (ParseTree pt : testTrees) {
conditionalProbs = reg.classify(pt.features());
System.out.printf("%s\t\t%f", pt.toString(), conditionalProbs[1]);
System.out.println();
}
Diese produziert, zum Beispiel:
Tree Odds of being by the sought author
K and Burstner 0.000000
how is babby formed answer 0.005170
Mary is in heat 0.999988
Prelim 1.000000
Nur darum, zwei \t
im es ist die Art von ungeschickt - die Spalten nicht wirklich line-up. Ich würde eher eine Ausgabe wie diese:
Tree Odds of being by the sought author
K and Burstner 0.000000
how is babby formed answer 0.005170
Mary is in heat 0.999988
Prelim 1.000000
(Anmerkung: ich habe Schwierigkeiten damit, das SO text-editor die Zeile, die Spalten perfekt, aber ich hoffe Sie bekommen die Idee.)
Gibt es einen einfachen Weg, dies zu tun, oder muss ich schreiben Sie eine Methode, um zu versuchen, um es herauszufinden, basierend auf der Länge der Zeichenfolge in der "Baum" - Spalte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du suchst Feldlängen. Versuchen Sie es mit dieser:
Den -32 erzählt Sie, dass die Zeichenfolge sollte Linksbündig ausgerichtet, aber mit einer Länge von 32 Zeichen (passen Sie nach Ihrem Geschmack, nahm ich 32, da es ein Vielfaches von 8, die ein normales tab-stop auf einem terminal). Mit der gleichen auf dem Kopf, aber mit
%s
statt%f
machen, dass ein line-up schön zu.Was Sie brauchen, ist die erstaunliche noch frei
format()
.Es funktioniert, indem Sie die Platzhalter in einem template-string, erzeugt es eine Kombination von Vorlage und Werte als Ausgabe.
Beispiel:
%s
ist ein Platzhalter für Strings;%25s
bedeutet leer-pad beliebige Strings zu 25 Zeichen.%-25s
bedeutet Links-rechtfertigen Sie die Zeichenfolge im Feld, d.h. pad auf der rechten Seite der Zeichenfolge.%9.7f
bedeutet Ausgabe einer Gleitkommazahl mit 9 Plätzen und 7 nach rechts von der Dezimalstelle.%n
ist notwendig, um "" ein leitungsabschluss, das ist, was Sie sonst verpassen, wenn Sie gehen ausSystem.out.println()
zuSystem.out.format()
.Alternativ können Sie
erstellen Sie eine Ausgabe-String, und verwenden Sie dann
als vorher, um es zu drucken.
\n
im format-string%9.7\nf
... und könnte%n
wie in"%-25s %9.7f%n"
.Wie etwa
Siehe die Dokumentation für mehr Informationen über die Formatter-mini-Sprache.
http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html
Mit j-text-utils Sie können drucken auf die Konsole eine Tabelle wie:
Und es so einfach wie:
Die API erlaubt es auch, die Sortierung und die Zeilennummerierung ...
Vielleicht
java.io.PrintStream
'sprintf ()
und/oderformat
Methode ist das, was du suchst...