扫描仪+开关使用

问题描述 投票:0回答:3

我是Java的新手。

我正在做一个辅助项目;制作基于文本的游戏。我意识到使用Switch语句对于这种类型的游戏非常有用。

所以基本上它是如何工作的。

我问用户,你想做什么?

  1. 步行
  2. 等等

那么,与“再次询问用户”的默认声明一起构建switch语句和Scanner的最佳方法是什么?

我一直这样做(我的代码在这里),但它似乎有很多潜在的问题。

你能不能给我一些关于如何用qazxsw poi制作最佳qazxsw poi声明的提示?

非常感谢你提前。

switch
java switch-statement java.util.scanner
3个回答
1
投票

你的代码似乎没问题,但我会重构它。还要添加while循环再次询问:

Scanner

0
投票

最好首先检查扫描仪是否有东西,然后检查它是否为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?

        }

0
投票

我建议你在这种情况下使用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(); 

                }
            }
© www.soinside.com 2019 - 2024. All rights reserved.