使用println()

时间:2018-03-28 19:38:10

标签: java string eclipse stringbuffer

我最近遇到了一个奇怪的问题。我正在使用StringBuffer创建一个字符串,当我在字符串中添加一些空格时,我意识到某些字符已经消失了。

示例:

public static void main(String[] args) throws Exception {

    StringBuffer sb = new StringBuffer();

    sb.append("000.00                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ");
    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800));

    System.out.println(sb.toString());
    System.out.println(sb.toString().charAt(4));

}

public static String filler(Integer size) {
    return String.join("", Collections.nCopies(size, " "));
}

在Eclipse中运行的输出

000.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
0

filler是一个创建空字符串的函数。

当我运行它时,我的初始字符串简单的最后两个零消失了。奇怪的是,如果我在这些位置打印位置的值,则会出现零。

这是StringBuffer类的某种错误吗?

1 个答案:

答案 0 :(得分:4)

当您输出具有相对重要字符数的String时,这可能是您的IDE特有的呈现问题。

如果我在Eclipse上运行你的程序我确实是一个意外的输出:

000.                                                 

虽然我期望000.00作为该行的开头。

但是如果我复制Eclipse控制台中生成的行的开头并将其粘贴到其他地方,我会看到预期的输出:

000.00      

创建StringBuilder的子字符串,您可以看到准确的可见输出:

System.out.println(sb.substring(0,6));

有关信息,问题仅发生在最后append()

    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800));
    sb.append(filler(800)); // issue in the output from there

请注意,您可以在Eclipse首选项中强制最大字符宽度。每次达到一行的最大字符宽度时,它将导致换行。

Eclipse preferences

例如,使用此设置,我现在可以看到预期的输出:

000.00                                                                                              

但是作为副作用,每当我的线超过固定限制时,输出中会有breakline