抱歉发布了一些愚蠢的问题,但我似乎无法理解为什么我的方法startEndCoords似乎无法通过我的main方法正常运行:
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class MazeSolver {
// The name of the file describing the maze
static String mazefile;
// set global variables
static int arrayHeight;
static int arrayWidth;
static int startRow;
static int startColumn;
static int endRow;
static int endColumn;
static int cellsize;
static int borderwidth;
static int sleeptime;
static char [][] maze;
public static void main(String[] args) throws FileNotFoundException {
if (handleArguments(args)) {
maze = readMazeFile(args[0]);
startEndCoords(maze);
if (solveMaze(startRow, startColumn))
System.out.println("Solved!");
else
System.out.println("Maze has no solution.");
}
}
// get starting & ending points
static boolean startEndCoords(char[][] mazeAsArray){
for (int r = 0; r < MazeSolver.arrayHeight; r++) {
for (int c = 0; c < MazeSolver.arrayWidth; c++) {
if (mazeAsArray[r][c] == 'S') {
MazeSolver.startRow = r;
System.out.println(startRow);
MazeSolver.startColumn = c;
System.out.println(startColumn);
}
if (mazeAsArray[r][c] == 'E') {
MazeSolver.endRow = r;
System.out.println(endRow);
MazeSolver.endColumn = c;
System.out.println(endColumn);
return true;
}
}
}
return false;
}
方法中的print语句不会执行,也不确定缺少什么。
感谢您的帮助。
答案 0 :(得分:0)
您的readMazeFile
方法似乎旨在设置您声明的一些全局变量,但实际上并非如此。它改为声明自己的本地变量恰好具有相同的名称,并设置它们。这使得MazeSolver.arrayHeight
的默认值为0,所以for循环甚至在运行一次之前立即失效。
从设置int
和readMazeFile
的{{1}}行中删除arrayHeight
。这将使其使用并设置现有的静态变量,而不是创建新的本地变量。