我有一个非常奇怪的问题......今天早上我将用于测试目的的2D Dungeon打印到Eclipse - Console中。一切都很好。它看起来像这样(只有更大)
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
0,0,0,1,1,1,1,1,1,0,0,0
所以,但我有2个版本的2D阵列,一个有路径,一个有无法到达的房间和法线贴图。所以我一个接一个地打印出来。结果很奇怪。
它似乎完全变形......但我不明白为什么。我只是像这样打印所有3个:
System.out.println("Dungeon begins : ");
for(int y = 0; y < dungeon.length; y++){
for(int x = 0 ; x < dungeon[0].length; x++){
System.err.print(dungeon[y][x]);
}
System.err.println("");
}
System.out.println("Dungeon finished : ");
通常不应该发生。我的2D数组也只包含Chars:0,5。但控制台日志只显示1和0 ...这只发生在我打印所有3个接一个。即使每个打印之间的暂停也没有帮助,我尝试使用Thread.Sleep();.我重启IDE和我的电脑几次......没有帮助。
有谁知道为什么会这样?我目前正在使用Eclipse-Luna ...
答案 0 :(得分:0)
如果您System.err.print
同时使用不同的线程,则可能会发生这种情况。请更改您的代码,以便首先打印到新的StringBuffer,然后立即打印整个缓冲区。
public class Dungeon
{
public static final String LINEBREAK = System.getProperty("line.separator");
public static void main(final String[] args)
{
final int[][] dungeon = new int[10][10];
System.out.println("Dungeon begins : ");
final StringBuffer buffer = new StringBuffer();
for (int y = 0; y < dungeon.length; y++)
{
for (int x = 0; x < dungeon[0].length; x++)
{
buffer.append(dungeon[y][x]);
}
buffer.append(LINEBREAK);
}
System.err.println(buffer.toString());
System.out.println("Dungeon finished : ");
}
}