如何基于整数值执行代码

时间:2014-06-15 18:29:42

标签: java android if-statement int

我有一个int int minion1Hp,其值可以是0 - > 20.根据值,使用ImageViewbar1.setImageResource(R.drawable.hpa);设置特定图像资源。但是,我的代码目前看起来像这样:

    if (minion1Hp == 0) {
        bar1.setImageResource(R.drawable.hp);
    }
    if (minion1Hp == 1) {
        bar1.setImageResource(R.drawable.hpa);
    }
    if (minion1Hp == 2) {
        bar1.setImageResource(R.drawable.hpb);
    }
    if (minion1Hp == 3) {
        bar1.setImageResource(R.drawable.hpc);
    }
    if (minion1Hp == 4) {
        bar1.setImageResource(R.drawable.hpd);
    }
    if (minion1Hp == 5) {
        bar1.setImageResource(R.drawable.hpe);
    }

......等等。有没有更有效的方法来实现这一点,而不是一长串if语句?

3 个答案:

答案 0 :(得分:4)

建议:在启动时初始化地图(例如在onCreate()中)。像这样:

mDrawables = new HashMap<Integer, Integer>();
mDrawables.put(0, R.drawable.hp);
mDrawables.put(1, R.drawable.hpa);
...

然后就这样做:

bar1.setImageResource(mDrawables.get(minion1Hp));

答案 1 :(得分:1)

您可以为每个实例使用switch语句和单独的case。另外,您不应该只使用if语句,代码运行缓慢,您应该使用else if使其运行得更快(因为您的hp可以永远不会同时成为1和2。

转换语句的例外:

switch (minion1Hp){ case 1: bar1.setImageResource(R.drawable.hp); break; case 2: bar1.setImageResource(R.drawable.hpa); break;

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

答案 2 :(得分:0)

此处的改进是将第一个if后的else if更改为minion1Hp,因为switch-case不能同时为多个值,但您可能会发现