我一直在为我的 CS 课做实验作业,我必须填写讲师提供给我的方法,我已经到了可以导航到数组中的一个点并标记方向的地步搬进来,但它只适用于某些位置,即使我可以看到一条清晰的路径。
例如,如果我输入 8,2 它发现路径就好了
这是一张照片:
但是如果我输入显然可以通过的点 8,3,我会得到一个溢出,我的程序只是在第 24 行和第 35 行之间来回跳转
如果有人对我哪里出错有任何想法,我将不胜感激一些提示!感谢大家
public char[][] findPath(int startRow, int startCol, int destRow, int destCol, int threshold){
if((startRow==destRow)&&(startCol==destCol)){
JOptionPane.showMessageDialog(null, "A path has been found!");
map[destRow][destCol] = '^';
return map;
}
else if(startRow < 9 && checkIfPassable(startRow + 1, startCol, threshold)){
map[startRow][startCol]= 'S';
startRow++;
return findPath( startRow, startCol, destRow, destCol, threshold);
}
else if(startCol < 9 && checkIfPassable(startRow , startCol + 1, threshold)){
map[startRow][startCol]= 'E';
startCol++;
return findPath( startRow, startCol, destRow, destCol, threshold);
}
else if(startRow > 1 && checkIfPassable(startRow -1, startCol, threshold)){
map[startRow][startCol]= 'S';
startRow--;
return findPath( startRow, startCol, destRow, destCol, threshold);
}
else if(startCol > 1 && checkIfPassable(startRow , startCol -1, threshold)){
map[startRow][startCol]= 'E';
startCol--;
return findPath( startRow, startCol, destRow, destCol, threshold);
}
System.exit(1);
return map;
}