Java中Switch-case語句,case一個範圍、區間,使用三目運算符解決!

java中的 switch-case   開關語句,大家應該都不陌生。

常見的是使用方式是這樣的:

switch (clock) {
            case 1:
                   System.out.println(1);
                break;
            case 2:
                   System.out.println(2);;
                break;
            case 3:
                   System.out.println(3);
                break;
            default :
                   System.out.println(100);
                break;
}

但有時候因爲業務需要,需要根據一個範圍去進行操作,那該怎麼辦呢?

此時用到了三目運算符,相等於多個if-else嘛。只是看起來簡潔一些。

這裏我創建了一個臨時變量(temp),利用三目表達式將範圍值變爲具體值,這樣只需更改冒號之後的值即可。

使用&而不使用&&,是因爲&&前的表達式如果不成立,&&後面的表達式就不會執行。

而&前後的表達式都會執行,&和&& 都一樣  前後表達式都爲true  則爲true;

則根據自己的業務靈活運用。

 /**
     * 根據傳入的分鐘 1~1440,將對應的時間段+1 
     * @param localTime
     */
public void setClockPushOne(int localTime) {
int temp = 0;
int clock = localTime>=temp&localTime<(temp+=60)?0:
                localTime>=temp&localTime<(temp+=60)?1:
                localTime>=temp&localTime<(temp+=60)?2:
                localTime>=temp&localTime<(temp+=60)?3:
                localTime>=temp&localTime<(temp+=60)?4:
                localTime>=temp&localTime<(temp+=60)?5:
                localTime>=temp&localTime<(temp+=60)?6:
                localTime>=temp&localTime<(temp+=60)?7:
                localTime>=temp&localTime<(temp+=60)?8:
                localTime>=temp&localTime<(temp+=60)?9:
                localTime>=temp&localTime<(temp+=60)?10:
                localTime>=temp&localTime<(temp+=60)?11:
                localTime>=temp&localTime<(temp+=60)?12:
                localTime>=temp&localTime<(temp+=60)?13:
                localTime>=temp&localTime<(temp+=60)?14:
                localTime>=temp&localTime<(temp+=60)?15:
                localTime>=temp&localTime<(temp+=60)?16:
                localTime>=temp&localTime<(temp+=60)?17:
                localTime>=temp&localTime<(temp+=60)?18:
                localTime>=temp&localTime<(temp+=60)?19:
                localTime>=temp&localTime<(temp+=60)?20:
                localTime>=temp&localTime<(temp+=60)?21:
                localTime>=temp&localTime<(temp+=60)?22:                                                                                                                                                                                                                        
                localTime>=temp&localTime<=(temp += 60) ? 23 :100;

switch (clock) {
            case 0:
                ++zero_and_one;
                break;
            case 1:
                ++one_and_two;
                break;
            case 2:
                ++two_and_three;
                break;
            case 3:
                ++three_and_four;
                break;
            case 4:
                ++four_and_five;
                break;
            case 5:
                ++five_and_six;
                break;
            case 6:
                ++six_and_seven;
                break;
            case 7:
                ++seven_and_eight;
                break;
            case 8:
                ++eight_and_nine;
                break;
            case 9:
                ++nine_and_ten;
                break;
            case 10:
                ++ten_and_eleven;
                break;
            case 11:
                ++eleven_and_twelve;
                break;
            case 12:
                ++twelve_and_thirteen;
                break;
            case 13:
                ++thirteen_and_fourteen;
                break;
            case 14:
                ++fourteen_and_fifteen;
                break;
            case 15:
                ++fifteen_and_sixteen;
                break;
            case 16:
                ++sixteen_and_seventeen;
                break;
            case 17:
                ++seventeen_and_eighteen;
                break;
            case 18:
                ++eighteen_and_nineteen;
                break;
            case 19:
                ++nineteen_and_twenty;
                break;
            case 20:
                ++twenty_and_twenty_one;
                break;
            case 21:
                ++twenty_one_and_twenty_two;
                break;
            case 22:
                ++twenty_two_and_twenty_three;
                break;
            case 23:
                ++twenty_three_and_zero;
                break;
            default:
                throw new RuntimeException("clock transform error");
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章