没有任何内容输出到控制台! (Java,月蚀火星)

Nothing is being output to the console! (Java, Eclipse Mars)

所以基本上我正在尝试编写一个路径查找程序,该程序可以找到从 10*10 网格中的某个点到另一个点的路径,这很好。

我有一个 class PathGridSquare 的 ArrayList(它们只是美化坐标)。

我在Pathclass中写了一个小方法来显示路径,这就是问题所在,这个问题很小但很令人气愤。

当我尝试 运行 代码,并调用 displayPath 时,nothing 被输出到控制台,程序终止且没有错误。

这是 displayPath 的代码:

public void displayPath(){
    System.out.println("This is displayPrint"); //This line is included to make sure the program calls the method correctly.
    for(int i=1; i==10; i++){
        for(int j=1; j==10; j++){
            if(this.includesSquare(i, j)){
                System.out.print("[x]");
            } else {
                System.out.print("[ ]");
            }
        }
        System.out.print("\n");
    }
}

我添加了第一行以确保 console/System.out.print() 正常工作并且每次调用该方法时都会显示。

这是 includesSquare 的代码:

public boolean includesSquare(int x, int y){
    for(GridSquare square : this.path){
        if(square.getX()==x && square.getY()==y){
            return true;
        }
    }
    return false;
}

我已经卸载并重新安装 Eclipse,将 java 文件复制到一个新项目等中,但似乎没有任何区别。我知道控制台工作正常,因为它正确显示了 displayPath 的第一行。

非常感谢任何帮助!

for(int i=1; i==10; i++)for(int j=1; j==10; j++) 将不起作用。

中间条件 (i==10) 应该说明循环应该何时执行。事实上,你是说你只希望循环在 i 等于 10 时执行。由于 i 最初等于 1,它将直接跳过循环。

您可能想要的是

for(int i=1; i<10; i++)

这样,当i等于1时,满足小于10的条件,所以循环执行,i自增。这将一直发生,直到 i 等于 10,此时条件 i<10 失败,因此循环将退出。

简而言之,您希望您的条件说 "loop while this is true" 而不是 "loop until this is true"。

for(int i=1; i==10; i++){ 是你的问题所在。

for循环的语法如下:

for(<initial condition>;<checking condition>;<incrementing>)

所以你拥有的是

i = 1开始,在i == 10期间递增1。那么i是从1开始的,你已经迈出了第一步!

将 for 循环转换为 while 循环以更好地理解这一点:

int i = 1;
while(i == 10) {
    doSomething();
    i++;
}

所以这当然行不通。