很多if语句的快速替代品

时间:2014-04-14 15:12:53

标签: java if-statement

我是java的初学者,我正在制作一个简单的程序,我输入的东西,如果我输入的内容匹配"数据库"然后它会打印一些文字。有没有更简单的方法来检查这个而不是这样做:

int 1;
int 2;
int 3;

if([USER INPUT].equals("1")) {
    System.out.println("TEST");
}

400次。

5 个答案:

答案 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