Android 将if-else条件更改为数组

Android 将if-else条件更改为数组,android,arrays,if-statement,Android,Arrays,If Statement,如何将此编码更改为数组?因为我发现这一步太长了。我是新手,你能帮我吗。多谢各位 if(num2 == 1) { display.setImageResource(R.drawable.one); if (num1 == 1) { display2.setImageResource(R.drawable.one); } else if (num1 == 2) {

如何将此编码更改为数组?因为我发现这一步太长了。我是新手,你能帮我吗。多谢各位

if(num2 == 1)
    {
        display.setImageResource(R.drawable.one);
        if (num1 == 1)
        {
            display2.setImageResource(R.drawable.one);
        }
        else if (num1 == 2)
        {
            display2.setImageResource(R.drawable.two);
        }
        else if (num1 == 3)
        {
            display2.setImageResource(R.drawable.three);
        }
        else if (num1 == 4)
        {
            display2.setImageResource(R.drawable.four);
        }
        else if (num1 == 5)
        {
            display2.setImageResource(R.drawable.five);
        }
    }

如果您可以控制
R
对象,我强烈建议您首先将
drawable
成员存储为一个数组。但如果你坚持

Drawable[] drawables = new Drawable[...];
drawables[1] = R.drawable.one;
drawables[2] = R.drawable.two;
...
if(num2 == 1) {
    int index = (num1 >= 1 && num1 < drawables.length) ? num1 : 1;
    display2.setImageResource(drawables[index]);
}
Drawable[]drawables=新的Drawable[…];
可抽出式[1]=R.drawable.one;
可抽出式[2]=R.drawable.two;
...
如果(num2==1){
int index=(num1>=1&&num1

尽管最好还是坚持使用当前代码或使用
开关
。是的,很详细,但很清楚

一个选择是使用

您可以这样定义可绘制图形:

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="1" android:drawable="@drawable/one />
    <item android:maxLevel="2" android:drawable="@drawable/two" />
    <item android:maxLevel="3" android:drawable="@drawable/three" />
    <!-- ... -->
</level-list>

这段代码是有效的,为什么还要麻烦呢?它足够快,并给你正确的结果。“如果它没有损坏,就不要修复它”。更相关的一点是,您不能存储一个
R.drawable…
类型而不是
num1
?@AleksG谢谢您,先生。但问题是我必须对变量num2和num1进行编码,直到数字10。那么这不是很长吗,先生?一个
switch
语句会稍微干净一点,但我不确定长代码是不可避免的。谢谢先生。但这只是编码的一部分。我必须为每个变量编码到数字10。那么不会很长吗?@amln\n你是说初始化?当它们是类成员并且必须显式命名才能访问时,如何避免这种情况?
if(num2 == 1) {
    display2.setImageLevel(num1);
}