2

\ nを使用して文字列のリストを作成しようとしていますが、複数の文字列を追加すると、文字列は前の文字列のポイントまでインデントされるため、出力例は次のようになります。

0 hello nain
            1 test nain
                       2 huh nain

なぜそうするのかわかりません。文字列を作成するコードは次のとおりです。

            String[] posts = currentTopic.getMessages("main");
            //String[] postsOutput = new String[posts.length];
            String postsOutput = "0 " + posts[0];

            for(int i = 1; i < posts.length; i++){
                postsOutput += "\n" + i + " " + posts[i];
                //postsOutput[i] = i + posts[i];
            }

            sc.close();
            return postsOutput;

また、\ nを追加の最後に移動しようとしましたが、結果は同じです。どんな助けでもいただければ幸いです。

ありがとう

4

4 に答える 4

6

これは、「\ n」が停止したばかりのシステム(改行)を使用していて、必要なキャリッジリターンがないように見えます。

これは、自分で気にする必要のあることではありません。 line.separatorプロパティは、ホストオペレーティングシステムに合わせて調整され、のように動作しSystem.out.printlnます。

于 2012-08-28T08:29:13.360 に答える
3

\ r \ n、つまりキャリッジリターンと改行を試してください。

于 2012-08-28T08:30:52.013 に答える
2

常にシステム固有の行区切り文字を使用するため、これはString.formatを使用する良い例だと思います。%nループ内に次のように書き込みます。

postsOutput += String.format("%n%d %d", i, posts[i]);
于 2012-08-28T08:38:34.353 に答える
1

System.getProperty("line.separator")基になるシステムの改行文字を保持するプロパティを使用する必要があります。

String newline = System.getProperty("line.separator");
String[] posts = currentTopic.getMessages("main");
//String[] postsOutput = new String[posts.length];
String postsOutput = "0 " + posts[0];

for(int i = 1; i < posts.length; i++){
    postsOutput += newline  + i + " " + posts[i];
    //postsOutput[i] = i + posts[i];
}

sc.close();
return postsOutput;
于 2012-08-28T08:35:25.840 に答える