控制台中的Java打印2D数组变形

控制台中的Java打印2D数组变形,java,arrays,eclipse,Java,Arrays,Eclipse,我有一个很奇怪的问题。。。今天早上,为了测试的目的,我将我的2D副本打印到Eclipse控制台中。一切都很顺利。它看起来有点像这样(只是更大) 但是我有3个版本的2D数组,一个有路径,一个有无法到达的房间和法线贴图。所以我一个接一个地把它们打印出来。结果很奇怪 看起来它完全变形了。。。但我不知道为什么。我只是这样打印所有3个: System.out.println("Dungeon begins : "); for(int y = 0; y < dungeon.leng

我有一个很奇怪的问题。。。今天早上,为了测试的目的,我将我的2D副本打印到Eclipse控制台中。一切都很顺利。它看起来有点像这样(只是更大)

但是我有3个版本的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 : ");
System.out.println(“地下城开始:”);
对于(int y=0;y
通常这不应该发生。另外,我的2D数组只包含字符:0,5。但是控制台日志只显示1和0。。。这只有在我一个接一个地打印所有3个时才会发生。即使每次打印之间暂停也无济于事,我用Thread.Sleep()尝试了一下;。我重启了IDE和我的电脑好几次。。。没有帮助


有人知道为什么会这样吗?我正在使用EclipseLuna…

如果您同时使用不同的线程
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 : ");
    }
}
公共级地下城
{
公共静态最终字符串LINEBREAK=System.getProperty(“line.separator”);
公共静态void main(最终字符串[]args)
{
最终智力[][]地下城=新智力[10][10];
System.out.println(“地牢开始:”);
最终StringBuffer=新StringBuffer();
对于(int y=0;y
您是否同时打印了所有三个地下城?为什么是Python?为什么是C?如果没有看到实际的代码,就不可能排除故障。@TobiasOtto我会一个接一个地打印所有这3个地下城。所以是我在那里发布的方法的3倍。是的,“同时”不起作用,我尝试使用“buffer.append(“\n”);”。但它给了我同样的变形输出。
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 : ");
    }
}