在java中重构大型if-else语句
我正在尝试重构一些代码,以便尽可能不使用大型if/elseif语句 代码如下:在java中重构大型if-else语句,java,if-statement,refactoring,Java,If Statement,Refactoring,我正在尝试重构一些代码,以便尽可能不使用大型if/elseif语句 代码如下: if (Character.getNumericValue(num) == 0 ) { return bar0; } else if (Character.getNumericValue(num) == 1 ) { return bar1; } else if (Character.getNumericValue(num) == 2 ) {
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;
}
基本上,它检查charnum是否等于int 0-9,然后返回相关的数字条(类型为string)。有没有办法让这更好
我希望是这样的
if (Character.getNumericaValue(num) == x {
return barx;
}
else
return bar10;
如果这有道理的话 您可以拥有一个条形数组,
条形
,该方法将根据您传递的索引返回条形
元素
public bar getBar(num){
return bars[Character.getNumericValue(num)];
}
确保根据您的要求覆盖所有边缘情况。您可以拥有一个条形阵列,
条形
,该方法将根据您传递的索引返回条形
元素
public bar getBar(num){
return bars[Character.getNumericValue(num)];
}
确保根据您的要求覆盖所有边缘情况。您可以拥有一个条形阵列,
条形
,该方法将根据您传递的索引返回条形
元素
public bar getBar(num){
return bars[Character.getNumericValue(num)];
}
确保根据您的要求覆盖所有边缘情况。您可以拥有一个条形阵列,
条形
,该方法将根据您传递的索引返回条形
元素
public bar getBar(num){
return bars[Character.getNumericValue(num)];
}
确保根据您的要求覆盖所有边缘情况。您可以创建一个数组来保存条形图值:
Bar[] arr = {bar0,.....,bar9};
int numb = Character.getNumericValue(num);
if(numb < 0 || numb >= arr.length){
return bar10;
}
else {
return arr[numb];
}
Bar[]arr={bar0,…,bar9};
int numb=Character.getNumericValue(num);
如果(numb<0 | | numb>=arr.length){
返回棒10;
}
否则{
返回arr[numb];
}
您可以创建一个数组来保存条形图的值:
Bar[] arr = {bar0,.....,bar9};
int numb = Character.getNumericValue(num);
if(numb < 0 || numb >= arr.length){
return bar10;
}
else {
return arr[numb];
}
Bar[]arr={bar0,…,bar9};
int numb=Character.getNumericValue(num);
如果(numb<0 | | numb>=arr.length){
返回棒10;
}
否则{
返回arr[numb];
}
您可以创建一个数组来保存条形图的值:
Bar[] arr = {bar0,.....,bar9};
int numb = Character.getNumericValue(num);
if(numb < 0 || numb >= arr.length){
return bar10;
}
else {
return arr[numb];
}
Bar[]arr={bar0,…,bar9};
int numb=Character.getNumericValue(num);
如果(numb<0 | | numb>=arr.length){
返回棒10;
}
否则{
返回arr[numb];
}
您可以创建一个数组来保存条形图的值:
Bar[] arr = {bar0,.....,bar9};
int numb = Character.getNumericValue(num);
if(numb < 0 || numb >= arr.length){
return bar10;
}
else {
return arr[numb];
}
Bar[]arr={bar0,…,bar9};
int numb=Character.getNumericValue(num);
如果(numb<0 | | numb>=arr.length){
返回棒10;
}
否则{
返回arr[numb];
}
创建一个值数组并执行以下操作
if(Character.getNumericaValue(num) < 10) {
return array[Character.getNumericaValue(num)];
} else {
return bar10;
}
if(Character.getNumericaValue(num)<10){
返回数组[Character.getNumericaValue(num)];
}否则{
返回棒10;
}
当然,如果您确定
num
将不小于0。创建一个值数组并执行以下操作
if(Character.getNumericaValue(num) < 10) {
return array[Character.getNumericaValue(num)];
} else {
return bar10;
}
if(Character.getNumericaValue(num)<10){
返回数组[Character.getNumericaValue(num)];
}否则{
返回棒10;
}
当然,如果您确定
num
将不小于0。创建一个值数组并执行以下操作
if(Character.getNumericaValue(num) < 10) {
return array[Character.getNumericaValue(num)];
} else {
return bar10;
}
if(Character.getNumericaValue(num)<10){
返回数组[Character.getNumericaValue(num)];
}否则{
返回棒10;
}
当然,如果您确定
num
将不小于0。创建一个值数组并执行以下操作
if(Character.getNumericaValue(num) < 10) {
return array[Character.getNumericaValue(num)];
} else {
return bar10;
}
if(Character.getNumericaValue(num)<10){
返回数组[Character.getNumericaValue(num)];
}否则{
返回棒10;
}
当然,如果您确定
num
将不小于0。什么是bar0
到bar10
您可以使用数组查找所需的元素:
String[] bars = { bar0, bar1, ... }; // etc.
int numericValue = Character.getNumericValue(num);
if (numericValue >= 0 && numericValue <= 9) {
return bars[numericValue];
} else {
return bar10;
}
String[]bar={bar0,bar1,…};//等
int numericValue=Character.getNumericValue(num);
如果(numericValue>=0&&numericValue什么是bar0
到bar10
您可以使用数组查找所需的元素:
String[] bars = { bar0, bar1, ... }; // etc.
int numericValue = Character.getNumericValue(num);
if (numericValue >= 0 && numericValue <= 9) {
return bars[numericValue];
} else {
return bar10;
}
String[]条={bar0,bar1,…};//等。
int numericValue=Character.getNumericValue(num);
如果(numericValue>=0&&numericValue什么是bar0
到bar10
您可以使用数组查找所需的元素:
String[] bars = { bar0, bar1, ... }; // etc.
int numericValue = Character.getNumericValue(num);
if (numericValue >= 0 && numericValue <= 9) {
return bars[numericValue];
} else {
return bar10;
}
String[]条={bar0,bar1,…};//等。
int numericValue=Character.getNumericValue(num);
如果(numericValue>=0&&numericValue什么是bar0
到bar10
您可以使用数组查找所需的元素:
String[] bars = { bar0, bar1, ... }; // etc.
int numericValue = Character.getNumericValue(num);
if (numericValue >= 0 && numericValue <= 9) {
return bars[numericValue];
} else {
return bar10;
}
String[]条={bar0,bar1,…};//等。
int numericValue=Character.getNumericValue(num);
if(numericValue>=0&&numericValue如果barN的值在执行过程中发生变化,他必须在每次执行if语句时构建此数组。在这种情况下,switch语句更有效。@irabakter OP应该将每个barN
重构为条[n]
,包括更新。维护一组十个索引变量本身就是一种味道。在我的情况下,它们不会改变,所以这是可行的。但是如果我确实需要改变它,我可以向数组中添加另一个字符串。如果barN的值在执行过程中发生变化,他每次执行if语句时都必须构建此数组。在这种情况下,开关语句更有效。@IraBaxter OP应该将每个barN
重构为条[n]
,包括更新。维护一组十个索引变量本身就是一种味道。在我的情况下,它们不会改变,所以这是可行的。但是如果我确实需要改变它,我可以向数组中添加另一个字符串。如果barN的值在执行过程中发生变化,他每次执行if语句时都必须构建此数组。在这种情况下,开关语句更有效。@IraBaxter OP应该将每个barN
重构为条[n]
,包括更新。维护一组十个索引变量本身就是一种味道。在我的情况下,它们不会改变,所以这是可行的。但是如果我确实需要改变它,我可以向数组中添加另一个字符串。如果barN的值在执行过程中发生变化,他每次执行if语句时都必须构建此数组。在这种情况下,开关声明更有效。@IraBaxter OP应该将每个barN
重构为bar[n]
,包括