我正在尝试制作一个小游戏:
有 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/