【问题标题】:Java Switch Case with multiple inputs具有多个输入的 Java Switch Case
【发布时间】:2017-01-29 20:14:37
【问题描述】:

我正在尝试做一个电子宠物,我希望对象能够从同一个扫描仪接收多个命令。所以当我输入“sleep”时,之后我可以在控制台中写下它应该做的下一件事,比如“吃”。

代码如下:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

    Tamagotchi blue = new Tamagotchi("Lenns", 8, 4, 6, 7);

    Scanner scanner = new Scanner(System.in);
    String Input = scanner.nextLine();

    switch (Input) {
    case "Eat":
        blue.eat();
        break;

    case "Sleep":
        blue.sleep();
        break;

    case "Sport":
        blue.sport();
        break;

    case "Condition":
        blue.output();
        break;

    default: System.out.println("no valid option");
        break;
    }

希望您能理解我的问题并能帮助我。
非常感谢您宝贵的时间。

【问题讨论】:

  • 你目前的代码有什么问题?
  • 我写了我的第一个命令,在此之后我不能写第二个,所以在我写 sleep 之后程序“结束”
  • 将你的代码放入while循环中。
  • 如果您希望能够输入多个输入,则需要将代码放入 while 循环中。 switch case 只执行一次。之后它会退出一次。
  • 好的,谢谢你,你能告诉我你会怎么做吗,我不会退出 shure 如何实现这个

标签: java switch-statement case


【解决方案1】:

为了重复一段代码,你需要一个循环,在你的情况下,包装用户输入的读取和 switch-case 以便可以重复操作

String Input = null;

while(true){
    Input = scanner.nextLine();
    switch (Input) {
    case "Eat":
        blue.eat();
        break;

    case "Sleep":
        blue.sleep();
        break;

    case "Sport":
        blue.sport();
        break;

    case "Condition":
        blue.output();
        break;

    default: System.out.println("no valid option");
        break;
    }

【讨论】:

  • 谢谢是有点工作把它的循环放在同一个命令之后我想写一个不同的命令
  • @brianmichelson 您需要将nextLine 放入循环中,如上所示。
【解决方案2】:

对上述答案的一些小调整

String Input = null;
while(true){
    try{
         Input = scanner.nextLine();
         switch (Input) {
            case "Eat":
                blue.eat();
                break;
            case "Sleep":
                blue.sleep();
                break;
            case "Sport":
                blue.sport();
                break;
            case "Condition":
                blue.output();
                break;
            default: 
               throw new IllegalArgumentException("Invalid operation");
        }
    }catch(IllegalArgumentException e){
        System.out.println(e.getMessage());
    }     
}

如果您使用此变体,您需要添加“退出”案例或类似的情况才能打破循环。

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多