There are many if conditions in Java
I just started learning Java and have a very basic problem I have a label. I want to change the color when a random integer between 1 and 18 falls on a specific number These numbers are not strange or even, so I can't use them
Now I have this:
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));
I know it looks silly, and I think it's an idiot What do you recommend? I haven't been to class, so any explanation is very useful thank you
Solution
You can use the switch:
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
}
If values may change quickly, or you want to allow more values, you can store them in an array or similar data:
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};
Then perform a search to find whether the value belongs to the specified array:
//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 {
//...
}
If you can even have more options, you may want to use a cache like method and store the data in 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);
}
Then you just call the value in the map:
Color = colorMap.get(Random);
