【问题标题】:Choice menu, choice from user in java选择菜单,java中用户的选择
【发布时间】:2018-11-22 09:54:30
【问题描述】:

所以在我的 Java 程序中,我有 4 个类。我想制作一个选择菜单,并根据用户的选择来运行相应的类。怎么会这样?

这是一个基于文本的记忆游戏。我想在 CMD 中运行它。

【问题讨论】:

  • 考虑使用Swing
  • 我的假我编辑它,它是基于文本的记忆游戏

标签: java intellij-idea cmd


【解决方案1】:

您将再创建一个具有main() 方法的类。我们称它为Runner 类。

在 runner 类中,您需要从用户那里获取输入。同样使用ScannerBufferedReader

阅读用户输入后,您可以简单地在用户输入上执行switch caseif else 以实例化所选类的对象。实例化后,使用实例化对象调用该类的相应方法。

如果您需要上述步骤的进一步帮助,请在 cmets 中告诉我。

【讨论】:

    【解决方案2】:

    为了使其易于维护,所有 4 个类都应实现一个通用接口。 Runnable 在此示例中,其中 run() 方法是类入口点。在此示例中,我只有 2 个类,但您可以通过将元素添加到 runnables 数组来轻松扩展它:

    import java.util.Scanner;
    import java.util.stream.IntStream;
    
    public class Menu {
    
        public static void main(String[] args) {
            Runnable [] runnables = { new M1(), new M2() };
            IntStream.range(0, runnables.length)
                    .forEach(i -> System.out.println(i + " " + runnables[i].getClass().getSimpleName()));
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            if (choice >=0 && choice < runnables.length) {
                System.out.println("Your choice: " + runnables[choice].getClass().getSimpleName());
                runnables[choice].run();
            }
        }
    
        public static class M1 implements Runnable {
            @Override
            public void run() {
                System.out.println("I choose to run M1");
            }
        }
    
        public static class M2 implements Runnable {
            @Override
            public void run() {
                System.out.println("M2 was chosen this time...");
            }
        }
    }
    

    样本输出:

    0 M1
    1 M2
    0
    Your choice: M1
    I choose to run M1
    

    【讨论】:

      【解决方案3】:

      首先,您不应该运行类,而应该采用方法。在我的示例中,我有 3 个类,并且在每个类中都有方法“doSth”:

      Scanner scanner = new Scanner(System.in); 
      String input = scanner.next();/*Get what the User types*/
      switch(input){
        case '1':
          Class1 c1 = new Class1();
          c1.doSth();
          break;
        case '2':
          Class2 c2 = new Class2();
          c2.doSth();
          break;
        case '3':
          Class3 c3 = new Class3();
          c3.doSth();
        default:
          System.Out.println('This Choice doesn't exist!');
          break;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 2016-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多