1

我有一个 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 工作正常。

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

我没有正确传递值吗?这是家庭作业,所以我并不是在寻找一个直接的答案;只是朝着正确的方向推进。
您的见解将不胜感激。

编辑

我想到了!当我打印网格以显示用户的位置时,我将 row 和 col 增加到它们的最大值。我所要做的就是在切换之前取回用户的值,并且效果很好!感谢所有看过这个的人!

4

0 回答 0