1

文字列バッファの幅を完成させるために末尾にスペースがある文字列を作成したいと思います。

例えば:

Stringbuffer str = new Stringbuffer(10);  //Create a string with 10 spaces.
str.append("Hello");

出力は、末尾にスペースがない「Hello」です。しかし、私が欲しいのは、5つの末尾スペースがある「Hello」です。

上記の例では、「Hello」は5文字であるため、その後にさらに5つのスペースが必要です。

アドバイスしてください、thx

4

6 に答える 6

3

StringBufferはAppendableを実装します。このStringBufferを使用してFormatterオブジェクトをインスタンス化してから、Formatterに作業を任せることができます。

StringBuilder sb = new StringBuilder();  // I prefer StringBuilder to StringBuffer
Formatter formatter = new Formatter(sb);
formatter.format("%-10s", "hello");
于 2012-11-06T03:05:01.457 に答える
2

長さが10未満になるまでスペースを追加するだけです。

while(str.length() < 10) {
    str.append(" ");
}
于 2012-11-06T02:58:39.103 に答える
0

文字列を正しく埋めるメソッドは次のとおりです。文字列を入力すると、intは必要なパッド用になります。

public static String padRight(String s, int n) { return String.format("%1$-" + n + "s", s);
}

最初に文字列を取得してから、それをStringBuffer(またはStringBuilder)に追加できます。

于 2012-11-06T03:03:48.713 に答える
0

かなり簡単なようです

ヒント:

  1. forループ、イテレータを文字列の長さに初期化し、10になるまでループします。
  2. ループ内では、文字列にスペースを追加します。
于 2012-11-06T02:59:53.113 に答える
0

あなたのコードでは:

Stringbuffer str = new Stringbuffer(10);  //Create a string with 10 spaces.

10個のスペースを持つ文字列を作成しません。実際には、容量10の文字列が作成されます。Javaドキュメントを参照してください:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html

答えについては、helloの後にスペースを追加するなど、上記の答えのいくつかに従うことができます。

于 2012-11-06T03:09:21.570 に答える
0

他の答えはあなたの問題を解決する方法を言います。質問の誤解を指摘したいだけです。

StringBuffer str = new StringBuffer(10);  //Create a string with 10 spaces.

実際、これはStringBuffer(またはStringBuilder)コンストラクター引数が意味するものではありません。実際に行っているのは、初期容量を指定することです。これは基本的に、最初に10文字のスペースを割り当てる実装へのヒントです。

  • コンテンツの実際のサイズは設定されません。実際のサイズは、バッファ/ビルダーに入れる文字数によって決まります。

  • バッファ/ビルダーのサイズを制限するものではありません。10文字を超える文字を追加すると、実装はバッファー/ビルダーのバッキングストレージを静かかつ効率的に拡張します。

(また、スレッドセーフなバッファーが必要なStringBuilder場合を除いて、使用するよりも使用することをお勧めしますStringBuffer。)

于 2012-11-06T03:16:23.747 に答える