gpt4 book ai didi

java - 在java中使用循环回溯?

转载 作者:行者123 更新时间:2023-11-30 07:46:40 27 4
gpt4 key购买 nike

这是我的代码的要点及其功能。这是一款选择你要去的地方的游戏。例如,如果您一开始选择路径 a,则可以在路径 d 和 e 之间进行选择,如果选择 d,则可以移动到 f 和 g 等等。

我想添加回溯。例如,如果我一开始选择a并一路走到f,我希望能够回到d并再次在f和g之间进行选择,或者一路回到起点并选择b.

我最初的想法是当我需要回溯时使用一些东西来告诉代码返回到某一行代码,但据我了解,java中没有goto。我有一个使用循环的预感。 (我特别在想 while 循环。)我不知道如何构建回溯循环。

这是我的代码:

public class PathGame {

public static void main (String[] args) {

String name = JOptionPane.showInputDialog("Hello! Welcome to my paths! What is your name, adventurer?");
JOptionPane.showMessageDialog(null, "Well then " + name + ", here's how this works...some generic instructions");

String startingChoice = JOptionPane.showInputDialog("Choose your path, a, b, or c.");

if (startingChoice.equals("a")){
String aChoice = JOptionPane.showInputDialog("Choose path d or path e");

if (aChoice.equals("d")) {
String dExamineChoice = JOptionPane.showInputDialog("path f or g?");
if (dExamineChoice.equals("f")) {
JOptionPane.showMessageDialog(null, name + "...!");
}
else if (dExamineChoice.equals("g")) {
JOptionPane.showMessageDialog(null, "Stuff g");
}
}
else if (aChoice.equals("e")) {
JOptionPane.showMessageDialog(null, "Stuff e");
}
else if (aChoice.equals("goBack")) {
///Backtrack back to start
}
}
else if (startingChoice.equals("b")) {
String bChoice = JOptionPane.showInputDialog("Path h or i?");
if (bChoice.equals("h")) {
String hChoice = JOptionPane.showInputDialog("Path j, k, or l?");
if (hChoice.equals("j")) {
String jExamine = JOptionPane.showInputDialog("m or n?");
if (jExamine.equals("m")) {
JOptionPane.showMessageDialog(null,"Stuff m");
}
else if (jExamine.equals("n")) {
JOptionPane.showMessageDialog(null,"Stuff n");
}
}
else if (hChoice.equals("k")) {
JOptionPane.showMessageDialog(null,"Stuff k");
}
else if (hChoice.equals("l")) {
JOptionPane.showMessageDialog(null,"Stuff l");
}
}
else if (bChoice.equals("i")) {
JOptionPane.showMessageDialog(null,"Stuff i");
}
}
}
}

最佳答案

回溯可以通过递归来实现。但是,因为您想要迭代方法。您可以使用堆栈应用相同的概念。每次访问一个新的方 block 时,将当前状态插入堆栈。当你需要回溯时(例如你陷入了死胡同),从堆栈中弹出。

如果您的目的是创建类似迷宫的东西,您可能需要记录访问过的方 block 。

是的,您应该使用 while 循环来做到这一点。

关于java - 在java中使用循环回溯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33821686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com