java - 如何在Java中使用一个循环进入另一个循环

标签 java loops while-loop switch-statement java.util.scanner

我正在尝试制作一个小游戏:

  • 有 2 个英雄可供选择:1 个战士和 2 个法师。

  • 接下来,您应该选择旅行方式:1 骑马 2 传送(仅适用于法师)。

  • 最后,选择武器:1剑2法杖(*法师只能使用法杖;战士可以两者都使用)。

我为第一个问题(选择英雄)创建了一个循环,这样如果用户输入 1 或 2 之外的其他内容,程序将重复该问题(“选择你的英雄:...)。我需要我的第二个问题和第三个问题也是如此(特别是因为有一些限制,例如,如果用户选择战士,他就不能选择传送作为他的旅行选项)。

public static void main(String[] args) {
    int hero, travel, weapon;
    Scanner scan = new Scanner(System.in);

    loop:
        while (true) {
            System.out.println("Choose your hero: 1 for Warrior, 2 for Mage");
            hero = scan.nextInt();
            switch (hero) {
            case 1:
                System.out.println("Choose your travel option: 1 for Horse; 2 for Teleportation");
                travel = scan.nextInt(); 
                break loop;
            case 2:
                System.out.println("Choose your travel option: 1 for Horse; 2 for Teleportation");
                travel = scan.nextInt(); 
                break loop;
            default:
                break;
            }
        }                       
}

我不知道如何在另一个循环中正确使用循环。我尝试了多种选项,但总是返回错误。

最佳答案

将事物分开总是一个好主意,而不是进行嵌套循环。这是一种将程序分为 3 个方法的简单方法,每个方法处理一个选择。

英雄选择:提供两种选择并循环,直到给出有效答案。然后返回答案

private static int queryHero() {
    Scanner scan = new Scanner(System.in);
    int hero;
    while (true) {
        System.out.println("Choose your hero: 1 for Warrior, 2 for Mage");
        hero = scan.nextInt();
        if(hero == 1 || hero == 2) {
            break;
        } else {
            System.out.println(hero + " is not a valid choice");
        }
    }
    return hero;
}

旅行选项选择:根据所选英雄提供选择并循环,直到给出有效答案。然后返回答案

private static int queryTravelOptionForHero(int hero) {
    Scanner scan = new Scanner(System.in);
    int travelOption;
    while (true) {
        if (hero == 1) {
            System.out.println("Choose your travel option: 1 for Horse");
            travelOption = scan.nextInt();
            if (travelOption == 1) {
                break;
            } else {
                System.out.println(travelOption + " is not a valid choice");
            }
        } else if (hero == 2) {
            System.out.println("Choose your travel option: 1 for Horse; 2 for Teleportation");
            travelOption = scan.nextInt();
            if (travelOption == 1 || travelOption == 2) {
                break;
            } else {
                System.out.println(travelOption + " is not a valid choice");
            }
        }
    }
    return travelOption;
}

武器选择:根据所选英雄提供选择并循环,直到给出有效答案。然后返回答案

private static int queryWeaponForHero(int hero) {
    Scanner scan = new Scanner(System.in);
    int weapon;
    while (true) {
        if(hero == 1) {
            System.out.println("Choose your weapon: 1 for Sword; 2 for Staff");
            weapon = scan.nextInt();
            if (weapon == 1 || weapon == 2) {
                break;
            } else {
                System.out.println(weapon + " is not a valid choice");
            }
        } else if(hero == 2) {
            System.out.println("Choose your weapon: 2 for Staff");
            weapon = scan.nextInt();
            if(weapon == 2) {
                break;
            }else {
                System.out.println(weapon + " is not a valid choice");
            }
        }

    }
    return weapon;
}

然后在你的主目录中:

int hero = queryHero();
int travelOption = queryTravelOptionForHero(hero);
int weapon = queryWeaponForHero(hero);

System.out.println("hero: " + hero);
System.out.println("travelOption: " + travelOption);
System.out.println("weapon: " + weapon);

注意:我不确定您是否了解它们,但是有一些方法可以使用枚举和列表使代码变得更好

关于java - 如何在Java中使用一个循环进入另一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56644104/

相关文章:

java - 我的合并排序算法的输出未排序

javascript - 有没有办法重写这个基本函数,这样我就不会重复相同的行两次?

C While 循环 - 检查函数

python - while循环中的条件语句不执行其下的所有内容

python - 使用Python中的while循环同时检索和检查值

java - 通过套接字发送字符串在 catch 语句中出现 null 错误

Java对如何排列 "if"语句感到困惑

java - Java中的 volatile 变量

c++ - 难以理解 for 循环如何与 C++ 中的数组交互 [作业]

c++ - 串行 boost 线程加入循环与并行加入主线程