加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中有很多If条件

发布时间:2020-12-15 02:04:21 所属栏目:Java 来源:网络整理
导读:我刚开始学习 java并且有一个非常基本的问题.我有一个标签,我希望在1到18之间的随机整数落在特定数字上时更改颜色.这些数字并不奇怪或偶数,所以我不能用它. 现在我有这个: if (Random == 1 || Random == 2 || Random == 5 || Random == 7 || Random == 12 |
我刚开始学习 java并且有一个非常基本的问题.我有一个标签,我希望在1到18之间的随机整数落在特定数字上时更改颜色.这些数字并不奇怪或偶数,所以我不能用它.

现在我有这个:

if (Random == 1 || Random == 2 || Random == 5 || Random == 7 || Random == 12 || Random == 14 || Random == 16 || Random == 18)  
        label_number.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
    else if (Random == 3 || Random == 4 || Random == 6 || Random == 8 || || Random == 9 | Random == 10 || Random == 11 || Random == 13 || Random == 15 || Random == 17)
        label_wheelNumber.setForeground(SWTResourceManager.getColor(SWT.COLOR_GREEN));

我知道它看起来很傻,而且我觉得这样做是个白痴.您有什么推荐的吗?我没上过课,所以任何解释都非常有用.谢谢

解决方法

您可以使用开关:

switch(Random) {
    case 1: case 2: case 5: case 7: case 12: case 14: case 16: case 18:
        //something...
        break;
    case 3: case 4: case 6: case 8: case 9: case 10: case 11: case 13: case 15: case 17:
        //something...
        break;
    default: 
        //just in case none of the over values was selected
}

如果值可能快速变化,或者您希望允许更多值,则可以将它们存储在数组或类似数据中:

static final int[] FOREGROUND_BLUE = {1,2,5,7,12,14,16,18};
static final int[] FOREGROUND_GREEN = {3,4,6,8,9,10,11,13,15,17};

然后执行搜索以查找该值是否属于指定的数组:

//using binary search since the data in the array is already sorted
int found = Arrays.binarySearch(FOREGROUND_BLUE,Random);
if (found >= 0) {
    //something...
}
found = Arrays.binarySearch(FOREGROUND_GREEN,Random);
if (found >= 0) {
    //something...
} else {
    //...
}

如果您甚至可以拥有更多选项,可能您希望使用类似缓存的方法并将数据存储在Map< Integer,Color>中:

static final Map<Integer,Color> colorMap;
static {
    Map<Integer,Color> colorMapData = new HashMap<Integer,Color>();
    Color blue = SWTResourceManager.getColor(SWT.COLOR_BLUE);
    Color green = SWTResourceManager.getColor(SWT.COLOR_GREEN);
    colorMapData.put(1,blue);
    colorMapData.put(2,blue);
    colorMapData.put(3,green);
    colorMapData.put(4,green);
    colorMapData.put(5,blue);
    //...
    //this makes colorMap truly constant and its values cannot be modified
    colorMap = Collections.unmodifiableMap(colorMapData);
}

然后你只需调用map中的值:

Color = colorMap.get(Random);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读