将 If 语句链更改为 Switch 表达式

Changing a chain of If-statements into a Switch-expression

我正在尝试将下面的 if 语句 转换为 switch 表达式 .

public static int parseDays(String durationString) {
    String[] parts = durationString.split(" ");
    if (parts.length == 2) {
        return unitValueCalculation(parts[1], parts[0]);
    }
    else if (parts.length == 1)
    {
        if (parts[0].equalsIgnoreCase("once")) return 1;
    }
    return 0;
}

这是我得到的:

 public static int parseDays(String durationString) {
       
        switch (durationString) {
            case durationString.split(" ").length  == 2 -> unitValueCalculation(parts[1], parts[2]);
        }

不过,我不确定如何处理 case 语句。

如有任何想法,我们将不胜感激。

您提供的代码可以变成这样的switch-expression

public static int parseDays(String durationString) {
    String[] parts = durationString.split(" ");
    
    return switch(parts.length) {
        case 2 -> unitValueCalculation(parts[1], parts[0]);
        case 1 -> parts[0].equalsIgnoreCase("once") ? 1 : 0;
        default -> 0;
    };
}

parts数组的长度应该用在switch的括号()里面。每个特定长度(12)应该用作 case-constant.

default 案例涵盖所有未指定的数组大小。