我是Java的新手。
我正在做一个辅助项目;制作基于文本的游戏。我意识到使用Switch语句对于这种类型的游戏非常有用。
所以基本上它是如何工作的。
我问用户,你想做什么?
那么,与“再次询问用户”的默认声明一起构建switch
语句和Scanner
的最佳方法是什么?
我一直这样做(我的代码在这里),但它似乎有很多潜在的问题。
你能不能给我一些关于如何用qazxsw poi制作最佳qazxsw poi声明的提示?
非常感谢你提前。
switch
你的代码似乎没问题,但我会重构它。还要添加while循环再次询问:
Scanner
最好首先检查扫描仪是否有东西,然后检查它是否为int值。要做到这一点,可以使用sc.hasNext()和sc.hasNextInt(),如下所示,
public static void ask() {
Scanner sc = new Scanner(System.in);
System.out.println("What do you want to do?");
while (!sc.hasNextInt()) {
sc.next();
}
select = sc.nextInt();
switch (select) {
case 1:
eat();
break;
case 2:
walk();
break;
case 3:
sleep();
break;
default:
System.out.println("choose from 1 to 3");
ask(); //would you re call itself again here? or is there any otherway to do without recalling itself?
}
我建议你在这种情况下使用String。提高代码的可读性,避免错误。(public static void ask() {
Scanner sc = new Scanner(System.in);
boolean isWrongAnswer;
do {
isWrongAnswer = false;
System.out.println("What do you want to do?");
switch (sc.nextInt()) {
case 1:
eat();
break;
case 2:
walk();
break;
case 3:
sleep();
break;
default:
System.out.println("choose from 1 to 3");
isWrongAnswer = true;
}
} while (isWrongAnswer);
}
)
public static void ask() {
Scanner sc = new Scanner(System.in);
System.out.println("What do you want to do?");
while (sc.hasNext()) {
int select = 0;
if (sc.hasNextInt()) {
select = sc.nextInt();
}
switch (select) {
case 1:
System.out.println("call eat()");
break;
case 2:
System.out.println("call walk()");
break;
case 3:
System.out.println("call sleep()");
break;
default:
System.out.println("choose from 1 to 3");
ask();
}
}