**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
上个月关门了。
改进这个问题
我不是一个开发人员,但我知道应该有一个更好的方法来做以下。我不太熟悉lambda表达式,但很高兴能以更好的方式展示。
我需要设置一个英国车牌。每年车牌的第3位和第4位可以有两个值中的一个:例如:01/03/2017-31/08/2017将有“17”,例如。 AE17GHS
鉴于2017年9月1日至2018年2月28日将有“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);
}
2条答案
按热度按时间vsmadaxz1#
最简单和最明显的方法是使用嵌套的switch语句。
wwwo4jvm2#
我不知道你生成车牌的算法是否正确,但有两点:
你的代码中有一个输入错误,你检查年份是否是“18”两次。
你可以这样重写:
另外,我认为可以简化if语句的第二大块,如下所示: