在FOR循环中使用大量IF语句

时间:2018-01-26 13:53:49

标签: java

是否有更简单的方法来完成这样的任务,我不必使用大量的IF语句。

for (int i = 0; i < registration.length(); i++) {
        char numberFromReg = registration.charAt(i);
        String yearFromReg = "";
        if (numberFromReg == '1') {
            yearFromReg += "1";
        }   else if (numberFromReg == '2') {
            yearFromReg += "2";
        }   else if (numberFromReg == '3') {
            yearFromReg += "3";
        }   else if (numberFromReg == '4') {
            yearFromReg += "4";
        }   else if (numberFromReg == '5') {
            yearFromReg += "5";
        }   else if (numberFromReg == '6') {
            yearFromReg += "6";
        }   else if (numberFromReg == '7') {
            yearFromReg += "7";
        }   else if (numberFromReg == '8') {
            yearFromReg += "8";
        }   else if (numberFromReg == '9') {
            yearFromReg += "9";
        }   else if (numberFromReg == '0') {
            yearFromReg += "0";
        }
    }

5 个答案:

答案 0 :(得分:10)

好像你只想要numbers所以你可以使用replaceAll作为

yearFromReg  = registration.replaceAll("\\D","");

\\D:表示非数字值,因此replaceAll将删除字符串中的所有非数字值。

答案 1 :(得分:3)

为了解决更优雅地处理多个StringBuilder builder = new StringBuilder(); for (int i = 0; i < registration.length(); i++) { char numberFromReg = registration.charAt(i); if (numberFromReg >= '0' && numberFromReg <= '9') { builder.append(numberFromReg); } } String yearFromReg = builder.toString(); 语句的一般情况,这些语句都比较相同的值,但是对于不同的常量,通常使用StringBuilder语句。在这种情况下,这将起作用,但IMO仍然是过度的。

在这种情况下,您将构建一个包含输入字符串中所有数字的字符串。一种选择是使用String yearFromReg = registration.replaceAll("\\D", ""); ,只需附加任何数字,例如

String yearFromReg = registration.replaceAll("[^0-9]", "");

(是的,你可以继续使用重复的字符串连接 - 使用{{1}}更有效,更清晰。)

或者你可以使用正则表达式简单地用空字符串替换所有非数字,有效地提取所有数字:

{{1}}

或者,如果您的代码读者对正则表达式不熟悉,则相当于:

{{1}}

答案 2 :(得分:2)

首先,每次通过在循环中创建一个新字符串来清除字符串。

语法应为

Make empty string 
loop {
  build string 
} 
use string 

但是,更简单的方法就是将字符附加到字符串中。不清楚为什么你需要if语句

但是,看起来你真的想从字符串中删除所有非数字,在这种情况下,你可以在起始字符串上replaceAll("[^0-9]+,"")

答案 3 :(得分:1)

检查switch语句,文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

对于这个具体问题,其他人的答案实际上更准确。您不需要检查此处的所有条件

答案 4 :(得分:0)

切换语句是所有if语句的一个很好的替代,特别是因为条件在其他每个if中是相同的。使阅读更容易,更容易编写!

这是一个开关案例的例子:

switch(numberFromReg){
   case '1':   yearFromReg += "1";
               break;
   case '2':   yearFromReg += "2";
               break;
}

只需为if语句

添加其他每个案例