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);
        }
    }
}