我遇到了這個基本問題,其中開關大小寫與字符串一起使用。Break 語句不在案例之間使用,但為什么即使它與案例字符串不匹配,它也會轉到所有案例?所以我很好奇為什么輸出是3而不是1? public static void main(String [] args) { int wd=0; String days[]={"sun","mon","wed","sat"}; for(String s:days) { switch (s) { case "sat": case "sun": wd-=1; break; case "mon": wd++; case "wed": wd+=2; } } System.out.println(wd); }
2 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
你沒有 在末尾,所以值也遞增 2break;case "mon"
這是你沒想到的,流動:
0 -1 -1 +1+2 +2 = 3
^ ^ ^ ^ ^
init sat sun mon wed
添加如下中斷將得到輸出 1
case "mon":
wd++;
break;

UYOU
TA貢獻1878條經驗 獲得超4個贊
在“sat”和“mon”的案例末尾沒有。這意味著當一個元素匹配“sat”和“mon”時,它將執行該案例中包含的代碼,但隨后落入下一個案例。break;case
當到達 時,它會從開關塊中斷開。這將停止在塊內執行更多的代碼和用例測試。break
在這種情況下。當它測試“sat”和“mon”時,它看不到 ,因此繼續測試。break
0 -1 0 2 4 3
^ ^ ^ ^ ^ ^
sun mon mon wed sat
添加回答
舉報
0/150
提交
取消