Java 迷宫解算器找不到出口
我得到的唯一输出是找不到出口,但我可以找到出口。Java 迷宫解算器找不到出口,java,Java,我得到的唯一输出是找不到出口,但我可以找到出口。 我是在递归地做这件事。您的整个方法实际上不是递归地工作的。如果左上角有一个1,我从您的代码中将其解释为可行走方式,那么它将更改为7,并且您的方法将在不递归的情况下结束。 我认为四个递归方法调用应该是第一个if块的一部分,不需要else块。你试过调试吗?是的,但我不知道如何解决问题,即第一个if语句后方法关闭我更改了它,但我收到一个错误,说java.langstackoverflow null error你能帮我吗这对我来说意义重大吗现在你创造了一
我是在递归地做这件事。您的整个方法实际上不是递归地工作的。如果左上角有一个1,我从您的代码中将其解释为可行走方式,那么它将更改为7,并且您的方法将在不递归的情况下结束。
我认为四个递归方法调用应该是第一个if块的一部分,不需要else块。你试过调试吗?是的,但我不知道如何解决问题,即第一个if语句后方法关闭我更改了它,但我收到一个错误,说java.langstackoverflow null error你能帮我吗这对我来说意义重大吗现在你创造了一个无止境的循环。递归调用应该在赋值7之后(遍历它),否则您将在两个分片之间来回遍历,我会说左下和左上。
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import static java.lang.System.*;
public class Maze
{
private int[][] maze;
private boolean exitFound;
public Maze()
{
exitFound = false;
maze = new int[0][0];
}
public Maze(int size, String line)
{
exitFound=false;
maze = new int[size][size];
int spot=0;
for(int r= 0; r<maze.length; r++)
{
for(int c =0; c<maze[r].length; c++)
{
maze[r][c]=(line.charAt(spot*2)-48);
spot++;
}
}
}
public void checkForExitPath(int r, int c)
{
if (r >= 0 && r <maze.length &&c >= 0 && c < maze[0].length && maze[r][c] == 1)
{
checkForExitPath(r + 1, c);
checkForExitPath(r - 1, c);
checkForExitPath(r, c + 1);
checkForExitPath(r, c - 1);
maze[r][c] = 7;
if (r == maze.length-1 && c == maze[0].length-1){
this.exitFound =true;
}
}
}
public String toString()
{
String hol = "";
for(int i = 0; i<maze.length; i++){
for(int j = 0; j<maze[0].length; j++){
hol += " ";
if(maze[i][j] == 7){
hol += "1";
}
else
{
hol += maze[i][j];
}
}
hol += "\n";
}
if(this.exitFound)
{
hol+= "exit found";
}
else {
hol += "exit not found";
}
return hol;
}
}
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import static java.lang.System.*;
public class MazeRunner
{
public static void main( ) throws IOException
{
Scanner file = new Scanner(new File("maze.dat"));
while(file.hasNext())
{
int size = file.nextInt();
file.nextLine();
Maze test = new Maze(size, file.nextLine());
test.checkForExitPath(0,0);
out.println(test);
}
}
}