java switch语句中的多个变量

xzlaal3s  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(441)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我不是一个开发人员,但我知道应该有一个更好的方法来做以下。我不太熟悉lambda表达式,但很高兴能以更好的方式展示。
我需要设置一个英国车牌。每年车牌的第3位和第4位可以有两个值中的一个:例如:01/03/2017-31/08/2017将有“17”,例如。 AE17GHS 鉴于2017年9月1日至2018年2月28日将有“67”,例如。 AE67GHS ```
public void setVehiclePlateYear(StartDate startDate) {

  1. //Example parameter:
  2. //String startDate = "2017-06-17";
  3. String year = startDate.getStartDateString().substring(2, 4);
  4. String month = startDate.getStartDateString().substring(5, 7);
  5. switch (month) {
  6. case "03":
  7. case "04":
  8. case "05":
  9. case "06":
  10. case "07":
  11. case "08":
  12. if (year.equals("15"))
  13. vehiclePlateYear = "15";
  14. else if (year.equals("16"))
  15. vehiclePlateYear = "16";
  16. else if (year.equals("17"))
  17. vehiclePlateYear = "17";
  18. else if (year.equals("18"))
  19. vehiclePlateYear = "18";
  20. else if (year.equals("18"))
  21. vehiclePlateYear = "19";
  22. else if (year.equals("19"))
  23. vehiclePlateYear = "20";
  24. else if (year.equals("20"))
  25. vehiclePlateYear = "21";
  26. break;
  27. case "01":
  28. case "02":
  29. case "09":
  30. case "10":
  31. case "11":
  32. case "12":
  33. if (year.equals("15"))
  34. vehiclePlateYear = "64";
  35. else if (year.equals("16"))
  36. vehiclePlateYear = "65";
  37. else if (year.equals("17"))
  38. vehiclePlateYear = "66";
  39. else if (year.equals("18"))
  40. vehiclePlateYear = "67";
  41. else if (year.equals("19"))
  42. vehiclePlateYear = "69";
  43. else if (year.equals("20"))
  44. vehiclePlateYear = "70";
  45. else if (year.equals("21"))
  46. vehiclePlateYear = "71";
  47. break;
  48. }
  49. setPlateDate(vehiclePlateYear);
  50. }
vsmadaxz

vsmadaxz1#

最简单和最明显的方法是使用嵌套的switch语句。

  1. switch (month) {
  2. case "08":
  3. switch (year) {
  4. case "15":
  5. }
  6. break;
  7. }
wwwo4jvm

wwwo4jvm2#

我不知道你生成车牌的算法是否正确,但有两点:
你的代码中有一个输入错误,你检查年份是否是“18”两次。
你可以这样重写:

  1. case "08":
  2. int parsedYear = Integer.valueOf(year);
  3. if (parsedYear >= 15 && parsedYear <= 21) {
  4. vehiclePlateYear = parsedYear;
  5. }

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

  1. int parsedYear = Integer.valueOf(year);
  2. int base = 64;
  3. int delta = parsedYear - 15;
  4. if (parsedYear >= 15 && parsedYear <= 21) {
  5. vehiclePlateYear = base + delta;
  6. }
展开查看全部

相关问题