Main似乎跳过了我的一个方法

时间:2016-02-08 02:11:16

标签: java arrays methods

抱歉发布了一些愚蠢的问题,但我似乎无法理解为什么我的方法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语句不会执行,也不确定缺少什么。

感谢您的帮助。

full code

1 个答案:

答案 0 :(得分:0)

您的readMazeFile方法似乎旨在设置您声明的一些全局变量,但实际上并非如此。它改为声明自己的本地变量恰好具有相同的名称,并设置它们。这使得MazeSolver.arrayHeight的默认值为0,所以for循环甚至在运行一次之前立即失效。

从设置intreadMazeFile的{​​{1}}行中删除arrayHeight。这将使其使用并设置现有的静态变量,而不是创建新的本地变量。