4

各行が「パイプ」文字で囲まれているようなものを作成したいと思います。

| First Line |
| 100 200    |
| 1000 2000  |
  • 最初の行では、右側のパディングは 1 スペースです。
  • 2 行目では、右側のパディングは 4 つのスペースです。
  • 3 行目は 2 つのスペースです。

私は printf + フォーマッティング (およびパディング数を明示的に計算しない) を介してそれを実行しようとしていますが、フォーマッティング構文に問題があります。これが私の現在のコードです:

System.out.printf("| FIRST LINE" + "%50s\n", "|");
System.out.printf("| 100 200" + "%50s", "|");
System.out.printf("| 1000 2000" + "%50s", "|");

行あたりの最大文字数は 50 文字で、行の最初の文字が「パイプ」であり、行の最後の文字が別の「パイプ」であることを示しようとしています)。

問題は、左側の部分で既に使用されている文字 (つまり、「| FIRST LINE」) を考慮せずに 50 個のスペースが配置されていることです。上記のコードは次のようになります。

System.out.format("%s %50s\n", "| FIRST LINE", "|");

では、両方の文字列の幅が考慮されるように出力形式を定義するにはどうすればよいでしょうか?

前もって感謝します。

4

3 に答える 3

6

試してみてくださいFormatter

例えば

StringBuffer sb = new StringBuffer();
Formatter f = new Formatter(sb, Locale.getDefault());
f.format("| %-50s |%n", "FIRST LINE");
f.format("| %-50s |%n", "200 100");
f.format("| %-50s |%n", "1000 2000");
String finalResult = sb.toString();
System.out.println(finalResult);

出力:

| | 最初の行 |
| | 200 100 |
| | 1000 2000 |
于 2012-01-09T22:40:47.160 に答える
0

StringBuilderを使用できます。文字を設定し、文字列を置き換えるメソッドがあります。最初に StringBuilder を作成し、スペースと行末だけを含む文字を入力します。次に、パイプ文字を適切な場所に配置します。最後に、中間のスペースを書式設定された文字列に置き換えます。改行文字を数えることを忘れないでください。または、行ごとに上記のメソッドを実行し、別の StringBuilder を使用して行をまとめて追加してください。

于 2012-01-09T22:35:16.980 に答える
0

最長の文字列に 2 文字を加えたものに等しいパディングを自動的に選択するもの (上記の | FIRST LINE | のように) は不可能ですが、かなりきちんとしていたはずです。

私がお手伝いできる最善の方法は次のとおりです。

    System.out.println(String.format("| %10s |", "FIRST LINE" ));
    System.out.println(String.format("| %10s |", "100 200" ));
    System.out.println(String.format("| %10s |", "1000 2000" ));

それが役立つことを願っています。

于 2012-01-09T22:43:30.743 に答える