因此,我正在編寫一個隨機生成迷宮,然後找到解決方案的程序。我的部分代碼包含一個回溯算法,如果我遇到了死衚衕,那麼我會回退。帶字符串的回溯開關語句
每次我移動時,我都會記錄一個堆棧中的移動(北方爲「N」,東北方爲「NE」)。爲了回溯,我彈出堆棧的頂層元素,並使用switch語句來移動彈出方向的相反方向。
當我嘗試編譯我的代碼時,它給了我一個錯誤,即彈出的堆棧對象不能轉換爲int,但是我看到了用於其他程序中的switch語句的String。我認爲toString
方法會自動將對象轉換爲switch語句的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;
}
的發藍了部分具有個人信息。
不應該'S'的情況是'nowR - '而不是'nowC - '? –
只是爲了驗證你的假設,如果你將'visitStack.pop()'保存到一個變量,並使用'switch',它是否工作?當你這樣做時,那個變量有什麼價值? –
我會嘗試,是的,現在應該C - –