Java System.out.println()更改单线程程序中变量的值

Java System.out.println()更改单线程程序中变量的值,java,compiler-errors,Java,Compiler Errors,我一直在开发一个大小不错的单线程java应用程序。在它里面我有一个函数,它循环通过一个大约大小为[300][10]的矩阵。我在这段代码片段上面做了很多工作,并且有3个其他类似大小的矩阵作为局部变量。当我注意到代码: System.out.println(""); for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { if(i =

我一直在开发一个大小不错的单线程java应用程序。在它里面我有一个函数,它循环通过一个大约大小为[300][10]的矩阵。我在这段代码片段上面做了很多工作,并且有3个其他类似大小的矩阵作为局部变量。当我注意到代码:

System.out.println("");
for (int i = 0; i < table.length; i++) {
        for (int j = 0; j < table[i].length; j++) {
             if(i == 0 && j == 0){System.out.println("looped through 0 0");}
             // a bunch of other stuff
        }
}
//System.out.println("");
for (int i = 0; i < table.length; i++) {
        for (int j = 0; j < table[i].length; j++) {
             if(i == 0 && j == 0){System.out.println("looped through 0 0");}
             // a bunch of other stuff
        }
}
但守则:

System.out.println("");
for (int i = 0; i < table.length; i++) {
        for (int j = 0; j < table[i].length; j++) {
             if(i == 0 && j == 0){System.out.println("looped through 0 0");}
             // a bunch of other stuff
        }
}
//System.out.println("");
for (int i = 0; i < table.length; i++) {
        for (int j = 0; j < table[i].length; j++) {
             if(i == 0 && j == 0){System.out.println("looped through 0 0");}
             // a bunch of other stuff
        }
}
//System.out.println(“”);
对于(int i=0;i
不打印任何内容


为什么会这样?我是否用完了Java堆空间?我溢出来了吗?这是编译器错误吗

我发现了问题所在。在循环的上面,我有另一个循环,并在其中留下了printf语句。我仍然不知道为什么会发生这种情况,但我能够在下一节课中重现它

public class TestJavaPrintfError {

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            System.out.printf("    ");
        }
        String[][] table = new String[300][6];

        for (int i = 0; i < table.length; i++) {
            for (int j = 0; j < table[i].length; j++) {
                if (i == 0 && j == 0) {
                    System.out.println("looped through 0 0");
                }
            }
        }
    }

}
公共类TestJavaPrintfError{
公共静态void main(字符串[]args){
对于(int i=0;i<100;i++){
System.out.printf(“”);
}
字符串[][]表=新字符串[300][6];
对于(int i=0;i
我正在开发eclipse霓虹灯。有人知道为什么会这样吗?

这是个玩笑吗

只需将控制台滚动到最右边,您就会看到打印内容


您正在使用
System.out.printf(“”)100次,它会输出大量空格并将您的密码向右推。

什么是
表。长度
表[0]。长度
?我无法复制。在我的Java 9上,第二个代码段也打印了循环通过0的
(使用
int[]table=new int[300][10];
)。两个块都是相同的,所以问题出在其他地方<代码>System.out.println(“”)也不能influence@mrog前一行是WorkItem[][]table=root.toTable();其中workitem是我创建的一个类,root是一个自定义的树类,它有一个函数将其转换为一个表,并按预期工作。不是有条件的,但可能的解释是,
System.out
被重定向到某个地方。但是,对引用的行进行注释不会导致这种情况发生。一方面,是的。我的回答不好。它只是在一堆东西上贴标签。但这不是我最初遇到的问题。在答案中,尝试将其从100更改为10000,然后语句将更改为0,并位于下一行。将其更改为5000,它将在一束上打印0。在我的原始代码中,我让它只打印消失的字符。我还在想为什么会这样?我假设eclipse处理太多字符的printf就是这样