Java - Boolean仅返回false;我传递的错误值是多少?

时间:2013-03-26 16:20:54

标签: java methods boolean return

我有10x10点阵。我要求用户在'网格'上找到一个起点,然后在网格中生成随机游走,向北,向南,向东和向西。

我使用了一个取决于随机数的switch语句来逆时针迭代,检查'。'在每个方向。如果我找到一个点,我会移动到网格上的那个位置,并递增一个字母字符。程序执行直到用户达到'Z',或直到用户卡住 - 这首先发生。

随机数从0-3生成。如果为0,则程序检查北,然后是东,然后是南,然后是西;如果为1,则向东检查,然后向南检查,依此类推。

例如,如果用户从网格上的1,1开始,他/她应该能够向任何方向移动,因为网格上没有其他内容。它们被点完全包围。

我的问题是,当我将我的switch语句中的下一个可能位置传递给布尔方法时,它总是返回false。

这是布尔方法:

public static boolean canMove(int r, int c)
{
boolean canMoveSwitch = false;
    if ((r>=0 && r <=9) && (c>=0 && c <=9))
    {
        if(walkingGrid[r][c] == '.')
        {
            canMoveSwitch = true;
        }
    }
    return canMoveSwitch;
}


这是开关的一部分:

public static void makeAMove()
{
    while(stopCode != 1)
    {
        getRandom();
        switch(randomDirection)
        {
            case 0: if(canMove(row-1, col) == true)//North
                    {
                        alphabetIndex = (char)alphabetIndex + 1;
                        walkingGrid[row-1][col] = (char)alphabetIndex;
                    }
                    else if(canMove(row, col+1) == true)//East
                    {
                        alphabetIndex = (char)alphabetIndex + 1;
                        walkingGrid[row][col+1] = (char)alphabetIndex;
                    }
                    else if(canMove(row+1,col) == true)//South
                    {
                        alphabetIndex = (char)alphabetIndex + 1;
                        walkingGrid[row+1][col] = (char)alphabetIndex;
                    }
                    else if(canMove(row,col-1) == true)//West
                    {
                        alphabetIndex = (char)alphabetIndex + 1;
                        walkingGrid[row][col-1] = (char)alphabetIndex;
                    }
                    else
                    {
                        stopCode = 1;
                    }
                     break;


RandomDirection工作正常。

我从main打印它只是为了确保。 Row和col是用户输入的坐标。那时,它们应该能够至少向一个方向移动,但布尔永远不会返回true。
我从主程序打印了“canMoveSwitch”,所以我知道它返回了一个真/假值。

我没有正确传递值吗?这是为了做作业,所以我并不是在寻找一个彻头彻尾的答案;只是向正确的方向推 您的见解将受到赞赏。

修改

我明白了!当我打印网格以显示用户的位置时,我将row和col增加到它们的最大值。我所要做的只是在切换之前取回用户的值,它工作正常!感谢所有看过这个的人!

0 个答案:

没有答案