10

計算の最後に、結果を出力します。

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();
}

これにより、たとえば次のようになります。

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

そこに 2 つ入れるのはちょっと\t不器用です。列が実際には整列していません。次のような出力が必要です。

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

(注: SO テキスト エディターでこれらの列を完全に整列させるのに問題がありますが、うまくいけば、アイデアが得られることを願っています。)

これを行う簡単な方法はありますか、または「ツリー」列の文字列の長さに基づいてそれを把握しようとする方法を作成する必要がありますか?

4

6 に答える 6

15

フィールドの長さを探しています。これを使用してみてください:

printf ("%-32s %f\n", pt.toString(), conditionalProbs[1])

-32は、文字列を左揃えにする必要があることを示していますが、フィールド長は32文字です(好みに合わせて、端末の通常のタブストップである8の倍数である32を選択しました)。ヘッダーに同じものを使用しますが、%s代わりに%fを使用すると、その1つもうまく整列します。

于 2009-12-09T18:45:55.627 に答える
4

あなたが必要としているのは、素晴らしいのに無料のformat().

テンプレート文字列でプレースホルダーを指定できるようにすることで機能します。テンプレートと値の組み合わせを出力として生成します。

例:

System.out.format("%-25s %9.7f%n", "K and Burstner", 0.055170);
  • %s文字列のプレースホルダーです。
  • %25s指定された文字列を 25 文字まで空白で埋めることを意味します。
  • %-25sは、フィールド内の文字列を左揃えにすることを意味します。つまり、文字列の右側にパディングします。
  • %9.7fは、全部で 9 桁、小数点以下 7 桁の浮動小数点数を出力することを意味します。
  • %nは行終端を「実行」するために必要System.out.println()ですSystem.out.format()

または、使用することができます

String outputString = String.format("format-string", arg1, arg2...);

出力文字列を作成してから使用します

System.out.println(outputString);

以前と同じように印刷します。

于 2009-12-09T18:51:43.950 に答える
2

どうですか

System.out.printf("%-30s %f\n", pt.toString(), conditionalProbs[1]);

Formatterミニ言語の詳細については、ドキュメントを参照してください。

于 2009-12-09T18:46:29.420 に答える
1

http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html

于 2009-12-09T18:45:17.827 に答える
1

j-text-utilsを使用すると、次のようなテーブルをコンソールに出力できます。

そしてそれは次のように簡単です:

TextTable tt = new TextTable(columnNames, data);                                                         
tt.printTable();   

この API では、並べ替えと行番号付けも可能です...

于 2013-12-25T10:38:38.813 に答える
0

おそらく、および/またはメソッドjava.io.PrintStreamが探しているものです...printfformat

于 2009-12-09T18:54:03.540 に答える