【发布时间】:2018-11-22 09:54:30
【问题描述】:
所以在我的 Java 程序中,我有 4 个类。我想制作一个选择菜单,并根据用户的选择来运行相应的类。怎么会这样?
这是一个基于文本的记忆游戏。我想在 CMD 中运行它。
【问题讨论】:
-
考虑使用Swing
-
我的假我编辑它,它是基于文本的记忆游戏
标签: java intellij-idea cmd
所以在我的 Java 程序中,我有 4 个类。我想制作一个选择菜单,并根据用户的选择来运行相应的类。怎么会这样?
这是一个基于文本的记忆游戏。我想在 CMD 中运行它。
【问题讨论】:
标签: java intellij-idea cmd
您将再创建一个具有main() 方法的类。我们称它为Runner 类。
在 runner 类中,您需要从用户那里获取输入。同样使用Scanner 或BufferedReader。
阅读用户输入后,您可以简单地在用户输入上执行switch case 或if else 以实例化所选类的对象。实例化后,使用实例化对象调用该类的相应方法。
如果您需要上述步骤的进一步帮助,请在 cmets 中告诉我。
【讨论】:
为了使其易于维护,所有 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 个类,并且在每个类中都有方法“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;
}
【讨论】: