我已将我的所有课程从我的入门课程带到高中课程的java学院,并将它们放入名为gameChoices
的包中。然后我创建了一个类,当用户请求它们时会调用这些类,这称为whichGame
。我已经使用import gameChoices
导入了我想要调用的类。“无论它是什么游戏”;如何在whichGame
中调用这些类?我也将它们全部作为public static main(string [] args)
,哪些不应该有(我认为它只是whichGame
应该......)?那又是什么呢?感谢您帮助新手:)
答案 0 :(得分:1)
最简单的方法是设置一个大的if / then语句。
if(input.equals("t"))
thisOne.start();
else if(input.equals("a"))
anotherOne.start();
else if(input.equals("y"))
yetAnotherOne.start();
等等。如果你有很多课程,或者他们以相同的字母开头,可能会很痛苦。
答案 1 :(得分:0)
不确定您想要实现什么,但如果您需要按名称访问类,可以尝试Class.forName()并检查抛出的异常(特别是ClassNotFoundException)。 使用不区分大小写的字符串相等性进行名称检查,如果允许您通过反射访问ClassLoader的任何现有类。
修改强>
这是你的主要课程:
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
// initializes your map of letter->game class
private static final Map<String, Class<?>> GAMES = new HashMap<String, Class<?>>();
// constant name of main method for your games
private static final String MAIN_METHOD_NAME = "main";
// add your games
static {
GAMES.put("c", Chess.class);
GAMES.put("d", Doom.class);
// TODO moar gamez
}
public static void main(String[] args) {
try {
// prompts the user
System.out.println("Enter the game's name or starting letter: ");
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in)
);
// gets the response
String input = br.readLine();
br.close();
// iterates over your games' first letters
for (String gameName : GAMES.keySet()) {
// the input starts with one game's first letter...
if (gameName.startsWith(input.toLowerCase())) {
// gets the class
GAMES.get(gameName)
// gets its main method (typical signature is String[] args)
.getMethod(MAIN_METHOD_NAME, String[].class)
// invokes its main method with no arguments
.invoke((Object) null, (Object) null);
}
}
// handles any disaster
} catch (Throwable t) {
t.printStackTrace();
}
}
}
现在这里有两个“游戏”类:
package test;
public class Chess {
public static void main(String[] args) {
System.out.println("You've chosen Chess!");
}
}
......和......
package test;
public class Doom {
public static void main(String[] args) {
System.out.println("You've chosen Doom!");
}
}
现在将“Main”类设置为...主类。 当您启动该应用程序时,它将查询您的首字母。 如果您选择“c”或“d”,它将打印出:“您选择了[Chess / Doom]!”
我希望这有助于您入门。