有人可以解释一下为什么这段代码不打印数字吗?
String text = new String("SomeString");
for (int i=0; i<1500; i++) {
text = text.concat(i+"");
}
System.out.println(text);
结果
SomeString
如果我将运行次数减少到1000就可以了,为什么?! 而且如果我不仅添加一个数字而且添加一个字符,它也可以。
确定新更新:
感谢您的代码示例。我尝试了所有这些,但我发现的是,控制台
实际上显示数字但仅在fontcolor白色。但是String的第一部分
SomeString
是黑色的。
我使用jdk1.7.0_06!
答案 0 :(得分:4)
这是eclipse错误。固定宽度控制台修复输出。
答案 1 :(得分:0)
String.concat()接受String
参数。
如果添加“数字和字符”,则添加字符串,因为+
运算符理解您正在链接字符串和数字数据。
无论如何,代码对我来说运行良好,数字追加到1499,如预期的那样。
答案 2 :(得分:0)
您可以尝试一些事情。我会举两个例子。
首先,在Java中,您可以简单地将字符串添加到一起。 int
等基元应自动转换:
String text = new String("SomeString");
for (int i = 0; i < 1500; i++) {
text += i;
}
System.out.println(text);
其次,如果第一种方法仍不适合您,那么您可以尝试将int
显式转换为String
,如下所示:
String text = new String("SomeString");
for (int i = 0; i < 1500; i++) {
text += Integer.toString(i);
}
System.out.println(text);
答案 3 :(得分:0)
更有效地做同样的事情
StringBuilder text = new StringBuilder("SomeString");
for (int i = 0; i < 1500; i++) {
text.append(i);
}
System.out.println(text);
这两个示例都适用于Java 6更新32和Java 7更新3。
答案 4 :(得分:0)
我还发现,如果您将i + ""
替换为i + ","
,则显示正常。似乎有一些Eclipse控制台不喜欢长时间连续的纯数字。
String text = "SomeString";
for (int i = 0; i < 15000; i++) {
// text = text.concat(i + ""); // Doesn't display correctly
// text += i; // Doesn't display correctly
text = text.concat(i + ","); // Displays correctly
// text += i + ","; // Displays correctly
}
System.out.println(text);
这个bug对我来说有点担心。很好找!
更新:我尝试打印一长串“xxxxxx”,发现最多可显示32000个字符。当该行转到32001时,它不会显示。当我输入“12345”+“xxxxxxxxx ...”时,我仍然能够显示32000“x”字符,这意味着线路长度超过32000,因此它与总线路长度无关。它似乎与String对象的部分长度有关。