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 回答