简体   繁体   English

如何基于整数值执行代码

[英]How to execute code based on integer value

I have an int, int minion1Hp , which can be a value of 0 -> 20. Depending on the value it is, a certain image resource will be set for an ImageView , using bar1.setImageResource(R.drawable.hpa); 我有一个整数, int minion1Hp ,其值可以为0->20。根据它的值,将使用bar1.setImageResource(R.drawable.hpa);ImageView设置某个图像资源bar1.setImageResource(R.drawable.hpa); . However, my code currently looks like this: 但是,我的代码当前如下所示:

    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);
    }

... and so on. ... 等等。 Is there a more efficient way of doing this, rather than a long list of if statements? 有比这样做的一长串if语句更有效的方法吗?

Suggestion: initialize a map at startup (say in onCreate() ). 建议:在启动时初始化地图(例如onCreate() )。 Like this: 像这样:

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

then just do: 然后做:

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

You can use a switch statement with a separate case for each instance. 您可以为每个实例使用带有单独caseswitch语句。 On a side note, you shouldn't be using just if statements up there, your code will run slowly, you should be using else if to make it run faster (since your hp can never be 1 and 2 at the same time. 在一个侧面说明,你不应该只使用if语句在那里,你的代码将运行缓慢,你应该使用else if要使其运行速度更快(因为你的hp就决不会1和2在同一时间。

Ex for switch statements: 例如:switch语句:

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

etc. 等等

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

这里的改进是改变每个if第一个到后else ifminion1Hp不能在同一时间多个值,但你可能会发现它稍微整洁有在整个事情switch-case块来代替。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM