java—当用户输入2个值,中间有“and”时,它会执行一个case,我该怎么做呢?

ej83mcc0  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(405)

用户必须同时输入2个变量才能得到输出屏幕。密码有什么帮助吗?

switch(cardChoice)
            {
                case 1 && 5:
                  System.out.println("You have matched the :) card! You get 10 Points!");
                  System.out.println("-------  -------  -------  -------  -------  -------");
                  System.out.println("|     |  |     |  |     |  |     |  |     |  |     |");
                  System.out.println("|  :) |  |  2  |  |  3  |  |  4  |  |  :) |  |  6  |");
                  System.out.println("|     |  |     |  |     |  |     |  |     |  |     |");
                  System.out.println("-------  -------  -------  -------  -------  -------");
                  System.out.println("-------  -------  -------  -------  -------  -------");
                  System.out.println("|     |  |     |  |     |  |     |  |     |  |     |");
                  System.out.println("|  7  |  |  8  |  |  9  |  |  10 |  |  11 |  |  12 |");
                  System.out.println("|     |  |     |  |     |  |     |  |     |  |     |");
                  System.out.println("-------  -------  -------  -------  -------  -------");
                  cardPoints = cardPoints + 10;
                break;
                default:
                  System.out.println("Invalid Input!");

            }
kxxlusnw

kxxlusnw1#

如果你一定要用 switch ,有几种方法可以解决。诀窍在于 case 标签只能是单个值,因此必须以某种方式将两个输入组合成一个值,该值可以由 case 标签。
如果您只需要一个双向测试(例如,用户的选择是1和5,或者其他),那么将输入减少到yes/no就足够了。你可以这样做:

int choice1, choice2;
    System.out.println("Enter the number of your first card choice:");
    choice1 = scanner.nextInt();
    scanner.nextLine();
    System.out.println("Enter the number of your second card choice:");
    choice2 = scanner.nextInt();
    scanner.nextLine();
    // ...
    switch (choice1 == 1 && choice2 == 5 ? "yes" : "no"){
        case "yes":
             //  RIGHT!
             break;
        default:
             System.out.println("Invlid input!");
    }

如果这是真的 switch 有很多可能的案例,你需要更有创意。例如,你可以创建一个 String 以可预测的格式包含用户的选择,然后可以与 case . 例如:

int choice1, choice2;
    System.out.println("Enter the number of your first card choice:");
    choice1 = scanner.nextInt();
    scanner.nextLine();
    System.out.println("Enter the number of your second card choice:");
    choice2 = scanner.nextInt();
    scanner.nextLine();
    // ...
    String userChoice = String.format("%02d,%02d", choice1, choice2);
    switch (userChoice){
        case "01,05":
             //  RIGHT!
             break;
        case "02,04":
             // Another right answer!
             break;
        default:
             System.out.println("Invlid input!");
    }

另一种方法是将用户的选择组合成一个数字,以保留两个值的方式。例如,假设我们知道任何一个输入的有效选项都小于10。我们可以使用:

int choice1, choice2;
    System.out.println("Enter the number of your first card choice:");
    choice1 = scanner.nextInt();
    scanner.nextLine();
    System.out.println("Enter the number of your second card choice:");
    choice2 = scanner.nextInt();
    scanner.nextLine();
    // ...
    switch (choice1 * 10 + choice2){
        case 15:   // User chose 1 and 5
             //  RIGHT!
             break;
        case 24:   // User chose 2 and 4
             // Another right answer!
             break;
        default:
             System.out.println("Invlid input!");
    }

相关问题