我是java的初学者,我正在制作一个简单的程序,我输入的东西,如果我输入的内容匹配"数据库"然后它会打印一些文字。有没有更简单的方法来检查这个而不是这样做:
int 1;
int 2;
int 3;
等
if([USER INPUT].equals("1")) {
System.out.println("TEST");
}
400次。
答案 0 :(得分:10)
使用switch语句或HashMap。
Switch语句:可读,但与if-else链类似地编译(如果不相同)。
switch([USER_INPUT]) {
case 1:
System.out.println("TEST");
break;
case 2:
System.out.println("HELLO");
break;
// And so on.
}
Hash Map:更具可读性和简单性。这是首选。
// Initialization.
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"TEST");
map.put(2,"HELLO");
// Printing.
String s = map.get(USER_INPUT);
if (s == null)
System.out.println("Key doesn't exist.");
System.out.println(s);
答案 1 :(得分:1)
使用HashMap,键为Integer,值为text。
System.out.println(myMap.get(USER_INPUT));
你已经完成了myMap.put(1, "TEST");
等,这会使你的代码保持在OO。
switch的底层字节码和if是非常可比的,并且个人看不到切换到切换的任何优点(除非你想要通过,这意味着不包括break语句)。
答案 2 :(得分:1)
一个有趣的替代方案是使用枚举。如果要定义类中的所有值,这将起作用。它将简化用于获取文本值的代码。除了switch语句给你的东西之外,它还为你提供了一些更有趣的选择。
enum NumberText {
HELLO(1),
WORLD(2);
private static final HashMap<Integer,NumberText> map = new HashMap<Integer,NumberText>();
static{
for (ConnectionGenerator c : ConnectionGenerator.values()) {
map.put(c.code, c);
}
}
Integer code;
NumberText(Integer pCode) {
this.code = pCode;
}
Static ConnectionGenerator getTextFor(Integer code) {
return map.get(code);
}
}
然后获取文本,只需执行此操作:
NumberText nt = NumberText.getTextFor(USER_INPUT);
System.out.println(nt);
您可以获得更好的功能,并在枚举中添加一个额外的构造函数变量,并具有特定的文本字符串。
enum NumberText {
HELLO(1, "Hello to You"),
GOODBYE(2, "Goodbye");
private static final HashMap<Integer,NumberText> map = new HashMap<Integer,NumberText>();
static{
for (ConnectionGenerator c : ConnectionGenerator.values()) {
map.put(c.code, c);
}
}
Integer code;
String text;
NumberText(Integer pCode, String pText) {
this.code = pCode;
this.text = pText;
}
ConnectionGenerator getNumberTextFor(Integer code) {
return map.get(code);
}
getText() {
return this.text;
}
}
然后你可以得到这样的文字:
NumberText.getNumberTextFor(USER_INPUT).getText();
答案 3 :(得分:0)
使用switch
声明。
switch(i){
case 1:
System.out.println("Hi");
break;
case 2:
System.out.println("Ok");
break;
// ...
}
答案 4 :(得分:0)
您可以使用switch语句。
这是一个快速教程和一些更深入的解释。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html