我正在尝试重构一些代码,所以如果可能的话,我没有大的if / else if语句。
以下是代码:
if (Character.getNumericValue(num) == 0 ) {
return bar0;
}
else if (Character.getNumericValue(num) == 1 ) {
return bar1;
}
else if (Character.getNumericValue(num) == 2 ) {
return bar2;
}
else if (Character.getNumericValue(num) == 3 ) {
return bar3;
}
else if (Character.getNumericValue(num) == 4 ) {
return bar4;
}
else if (Character.getNumericValue(num) == 5 ) {
return bar5;
}
else if (Character.getNumericValue(num) == 6 ) {
return bar6;
}
else if (Character.getNumericValue(num) == 7 ) {
return bar7;
}
else if (Character.getNumericValue(num) == 8 ) {
return bar8;
}
else if (Character.getNumericValue(num) == 9 ) {
return bar9;
}
else {
return bar10;
}
基本上它检查char num是否等于int 0-9,然后返回关联的数字栏(字符串类型)。有没有办法让这更好?
我希望它像
if (Character.getNumericaValue(num) == x {
return barx;
}
else
return bar10;
如果这是有道理的。
答案 0 :(得分:3)
创建一个值数组并执行类似
的操作if(Character.getNumericaValue(num) < 10) {
return array[Character.getNumericaValue(num)];
} else {
return bar10;
}
当然,如果你确定num
不会小于0。
答案 1 :(得分:0)
您可以拥有一个数组bars
,该方法将根据您传递的索引返回bar
元素。
public bar getBar(num){
return bars[Character.getNumericValue(num)];
}
确保根据您的要求覆盖所有边缘情况。
答案 2 :(得分:0)
您可以创建一个包含条形值的数组:
Bar[] arr = {bar0,.....,bar9};
int numb = Character.getNumericValue(num);
if(numb < 0 || numb >= arr.length){
return bar10;
}
else {
return arr[numb];
}
答案 3 :(得分:0)
bar0
到bar10
究竟是什么?
您可以使用数组来查找所需的元素:
String[] bars = { bar0, bar1, ... }; // etc.
int numericValue = Character.getNumericValue(num);
if (numericValue >= 0 && numericValue <= 9) {
return bars[numericValue];
} else {
return bar10;
}