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");
}