所以我正在编写一个随机生成迷宫的程序,然后找到一个解决方案。我的部分代码包括一个回溯算法,如果我走到死路,我会向后移动。
每当我移动时,我都会在一个堆栈中记录移动(" 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;
}
蓝色部分有个人资料。
答案 0 :(得分:1)
对于java versions below 7
,它不会支持Strings in Switch Case
如果使用.Equals()
方法
或
您可以在Switch Case中使用枚举