没有任何内容输出到控制台! (Java,月蚀火星)
Nothing is being output to the console! (Java, Eclipse Mars)
所以基本上我正在尝试编写一个路径查找程序,该程序可以找到从 10*10 网格中的某个点到另一个点的路径,这很好。
我有一个 class Path
是 GridSquare
的 ArrayList(它们只是美化坐标)。
我在Path
class中写了一个小方法来显示路径,这就是问题所在,这个问题很小但很令人气愤。
当我尝试 运行 代码,并调用 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++;
}
所以这当然行不通。
所以基本上我正在尝试编写一个路径查找程序,该程序可以找到从 10*10 网格中的某个点到另一个点的路径,这很好。
我有一个 class Path
是 GridSquare
的 ArrayList(它们只是美化坐标)。
我在Path
class中写了一个小方法来显示路径,这就是问题所在,这个问题很小但很令人气愤。
当我尝试 运行 代码,并调用 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++;
}
所以这当然行不通。