使用字符串回溯切换语句

时间:2015-09-26 15:05:09

标签: java

所以我正在编写一个随机生成迷宫的程序,然后找到一个解决方案。我的部分代码包括一个回溯算法,如果我走到死路,我会向后移动。

每当我移动时,我都会在一个堆栈中记录移动(" N"对于North," NE"对于Northeast,on和on)。对于回溯,我弹出堆栈的顶部元素并使用switch语句移动弹出方向的相反方向。

当我尝试编译我的代码时,它给出了一个错误,即弹出的Stack对象无法转换为int,但我看到String用于其他程序中的switch语句。我认为toString方法会自动将对象转换为String语句。我尝试使用弹出值作为参数手动使用toString,但这也不起作用。这是代码和错误消息。

switch(visitStack.pop())
{
//                      have to backtrack the opposite direction i previously went
    case "N":   nowR++;
                visited[nowR][nowC] = 'N';
                break;
    case "NE":  nowR++;
                nowC--;
                visited[nowR][nowC] = 'N';
                break;
    case "E":   nowC--;;
                visited[nowR][nowC] = 'N';
                break;
    case "SE":  nowR--;
                nowC--;
                visited[nowR][nowC] = 'N';
                break;
    case "S":   nowC--;
                visited[nowR][nowC] = 'N';
                break;
    case "SW":  nowR--;
                nowC++;
                visited[nowR][nowC] = 'N';
                break;
    case "W":   nowC++;
                visited[nowR][nowC] = 'N';
                break;
    case "NW":  nowR++;
                nowC++;
                visited[nowR][nowC] = 'N';
                break;
}

enter image description here

蓝色部分有个人资料。

1 个答案:

答案 0 :(得分:1)

对于java versions below 7,它不会支持Strings in Switch Case

如果使用.Equals()方法

比较字符串的梯形图,则替代方案将是其他方法

您可以在Switch Case中使用枚举