0

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

我有一个类Path,它是 s 的 ArrayList GridSquare(它们只是美化的坐标)。

我在Path类中编写了一个小方法来显示路径,这就是问题的出现,这个问题非常小但非常令人恼火。

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

这是代码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

任何帮助是极大的赞赏!

4

2 回答 2

3

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失败,因此循环将退出。

简而言之,您希望您的条件说“当这是真的时循环而不是“循环直到这是真的”。

于 2015-10-01T19:54:48.597 回答
1

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

for 循环的语法如下:

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

所以你所拥有的是

从 开始i = 1,同时增加 1 i == 10。好吧,i从 1 开始,您已经在第一步失败了!

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

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

所以这当然行不通。

于 2015-10-01T20:00:41.780 回答