Java Switch语句中的多个变量

Steerpike

我不是开发人员,但我知道应该有以下更好的方法。我对lambda表达式不太熟悉,但是很高兴能被展示出更好的方法。

我需要设置一个英国车牌。每年可以为车牌的第3位和第4位输入2个值之一:例如:01/03 / 2017-31 / 08/2017将具有“ 17”,例如AE17GHS01/01 / 2017-28 / 02 / 2018年将有'67'例如AE67GHS

    public void setVehiclePlateYear(StartDate startDate) {
    
       //Example parameter:
       //String startDate = "2017-06-17";

        String year = startDate.getStartDateString().substring(2, 4);
        String month = startDate.getStartDateString().substring(5, 7);

        switch (month) {
            case "03":
            case "04":
            case "05":
            case "06":
            case "07":
            case "08":
                if (year.equals("15"))
                    vehiclePlateYear = "15";
                else if (year.equals("16"))
                    vehiclePlateYear = "16";
                else if (year.equals("17"))
                    vehiclePlateYear = "17";
                else if (year.equals("18"))
                    vehiclePlateYear = "18";
                else if (year.equals("18"))
                    vehiclePlateYear = "19";
                else if (year.equals("19"))
                    vehiclePlateYear = "20";
                else if (year.equals("20"))
                    vehiclePlateYear = "21";
                break;
            case "01":
            case "02":
            case "09":
            case "10":
            case "11":
            case "12":
                if (year.equals("15"))
                    vehiclePlateYear = "64";
                else if (year.equals("16"))
                    vehiclePlateYear = "65";
                else if (year.equals("17"))
                    vehiclePlateYear = "66";
                else if (year.equals("18"))
                    vehiclePlateYear = "67";
                else if (year.equals("19"))
                    vehiclePlateYear = "69";
                else if (year.equals("20"))
                    vehiclePlateYear = "70";
                else if (year.equals("21"))
                    vehiclePlateYear = "71";
                break;
        }

        setPlateDate(vehiclePlateYear);
    }
迈克·汤姆森

我不知道您生成印版的算法是否正确,但是有两点:

  1. 您的代码中有错别字,您在其中两次检查年份是否为“ 18”。
  2. 您可以这样重写它:
case "08": 
    int parsedYear = Integer.valueOf(year);  
    if (parsedYear >= 15 && parsedYear <= 21) {  
        vehiclePlateYear = parsedYear;  
    }  

另外,我认为您可以简化if语句的第二大块,如下所示:

int parsedYear = Integer.valueOf(year);
int base = 64;
int delta = parsedYear - 15;
if (parsedYear >= 15 && parsedYear <= 21) {
    vehiclePlateYear = base + delta;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(Java)Switch语句中的全局变量问题

来自分类Dev

如何在Java的if语句中放置多个变量?

来自分类Dev

if语句中的Java变量范围

来自分类Dev

重用switch语句中的代码(Java)

来自分类Dev

SWITCH语句中的Java方括号错误?

来自分类Dev

Java IF语句中的多个整数比较

来自分类Dev

在switch语句中使用java.lang.Class <?>

来自分类Dev

switch语句中的Java非恒定表达式

来自分类Dev

在switch语句中使用java.lang.Class <?>

来自分类Dev

在Switch语句中声明变量

来自分类Dev

Switch语句中的多个参数

来自分类Dev

为什么不能在IF语句中解析Java变量?

来自分类Dev

JAVA:创建布尔变量还是在If语句中放入参数?

来自分类Dev

if-then语句中的Java变量初始化

来自分类Dev

JAVA:创建布尔变量还是在If语句中放入参数?

来自分类Dev

Java && || 在RETURN语句中?

来自分类Dev

Java && || 在RETURN语句中?

来自分类Dev

JAVA 布尔变量不会随着 Switch 语句而改变

来自分类Dev

switch语句中的局部变量重复

来自分类Dev

switch语句中的静态变量

来自分类Dev

C ++在switch语句中声明变量

来自分类Dev

在switch语句中分配变量

来自分类Dev

在switch语句中更新PHP变量(简单)

来自分类Dev

在 switch 语句中初始化变量

来自分类Dev

Switch语句中的多个相同选项

来自分类Dev

有没有办法将变量绑定到switch语句中的多个替代项?

来自分类Dev

有没有办法将变量绑定到switch语句中的多个替代项?

来自分类Dev

switch 语句中多个值的 powershell 语法是什么,并将结果设置为变量?

来自分类Dev

Java switch-case语句中不区分大小写的匹配