我已经将我所有的课程从高中课程的 Java 学院简介中拿出来,并将它们放入一个名为gameChoices
. 然后我创建了一个类,当用户要求它们时会调用这些类,这被称为whichGame
. 我已经导入了我想要使用的类import gameChoices
。“无论它是什么游戏”;。我如何调用这些类whichGame
?我也有它们public static main(string [] args)
,哪些不应该有(我认为whichGame
应该是..)?而我会放什么呢?感谢您帮助新手:)
问问题
44 次
2 回答
1
最简单的方法可能是设置一个大的 if/then 语句。
if(input.equals("t"))
thisOne.start();
else if(input.equals("a"))
anotherOne.start();
else if(input.equals("y"))
yetAnotherOne.start();
等等。如果您有很多课程,或者它们以相同的字母开头,可能会很痛苦。
于 2013-05-09T15:10:02.703 回答
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!");
}
}
现在将您的“主要”课程设置为您的...主要课程。当您启动应用程序时,它会询问您的首字母。如果你选择“c”或“d”,它会打印出:“你选择了[Chess/Doom]!”
我希望这可以帮助您入门。
于 2013-05-09T14:58:44.690 回答