簡體   English   中英

Java開關-各種條件運算符

[英]Java switch - varying conditional operators

我發現了一些“有點”相關的問題,但是我不確定我的需求已經完全滿足了這些問題。 因此,我要執行的操作是使用SWITCH / CASE清理以下IF / ELSE IF語句。 有沒有辦法在Java開關中使用多個條件運算符,還是嚴格來說是布爾值?

int alSize = Integer.parseInt(size);

if (alSize == 7 && (alType == 1 || alType == 3)){
disp = 0.12;
}else if (alSize == 9 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 0.27;
}else if (alSize == 9){
disp = 0.21;
}else if (alSize == 11 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 0.47;
}else if (alSize == 11){
disp = 0.41;
}else if (alSize == 12 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 0.75;
}else if (alSize == 12){
disp = 0.64;
}else if (alSize == 14 &&( alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 1.10;
}else if (alSize == 14){
disp = 0.96;
}else if (alSize == 16 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 1.60;
}else if (alSize == 16){
disp = 1.40;
}else if (alSize == 18 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 2.60;
}else if (alSize == 18){
disp = 2.30;
}else if (alSize == 22 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 4.0;
}else if (alSize == 22){
disp = 3.60;
}else if (alSize == 30 && (alType == 1 || alType == 3 || alType == 4 || alType == 5 )){
disp = 9.9;
}else if (alSize == 30){
disp = 9.2;
}

正如Kon所說,您不能將其簡化為一個非常簡單的開關/盒,但是您可以執行以下操作:

 boolean typeIs1345 = (alType == 1 || alType == 3 || alType == 4 || alType == 5);

    switch (alSize)
    {
        case 7:
            if (alType == 1 || alType == 3)
                disp = 0.12;
            break;
        case 9:
            disp = typeIs1345 ? 0.27 : 0.21;
            break;
        case 11:
            disp = typeIs1345 ? 0.47 : 0.41;
            break;
        case 12:
            disp = typeIs1345 ? 0.75 : 0.64;
            break;
        case 14:
            disp = typeIs1345 ? 1.1 : 0.96;
            break;
        case 16:
            disp = typeIs1345 ? 1.6 : 1.4;
            break;
        case 18:
            disp = typeIs1345 ? 2.6 : 2.3;
            break;
        case 22:
            disp = typeIs1345 ? 4.0 : 3.6;
            break;
        case 30:
            disp = typeIs1345 ? 9.9 : 9.2;
            break;
    }
}

哪個比較干凈

case子句中只能有一個表達式。 因此,不能,您無法以自己想像的漂亮方式做到這一點。

請參閱有關開關的Javadocs

您可以做的最接近的事情是:

switch (value)
    {
        case 1:
        case 2:
             //Operation if value is 1 or 2
        break;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM