使用 println() 在 Eclipse 控制台上不显示某些字符

Some characters not displayed on the Eclipse console with println()

最近遇到一个奇怪的问题。我正在使用 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 中输出 运行ning:

000.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
0

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

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

这是 StringBuffer class 上的某种错误吗?

这是一个 渲染 问题,可能是您的 IDE 特有的,因为您输出的 String 具有相对重要的字符数。

如果我 运行 你在 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 首选项中强制设置 最大字符宽度 。每次达到一行的最大字符宽度时都会导致换行。

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

000.00                                                                                              

但作为副作用,每次我的行超过固定限制时,我都会在输出中出现 breakline