我有這樣的代碼跟我從post得到了switch語句,其工作絕對沒問題:在switch語句中,爲什麼所有的情況都被執行?
String getOrdinal(final int day) {
if (day >= 11 && day <= 13) {
return "th";
}
switch (day % 10) {
case 1: return "st";
case 2: return "nd";
case 3: return "rd";
default: return "th";
}
}
,但如果我將其更改爲這樣的事情,它打破了,因爲所有的情況下,除了情況1變執行:
static String getOrdinal(final int day) {
StringBuilder ordinalBuilder = new StringBuilder();
ordinalBuilder.append("<sup>");
if (day >= 11 && day <= 13) {
ordinalBuilder.append("th") ;
}
switch (day % 10) {
case 1: ordinalBuilder.append("st");
case 2: ordinalBuilder.append("nd");
case 3: ordinalBuilder.append("rd");
default: ordinalBuilder.append("th");
}
ordinalBuilder.append("</sup>");
return ordinalBuilder.toString();
}
此打印2<sup>ndrdth</sup>
當我通過在「2」,我試圖改變建設者緩衝,但相同的反應..可這是一個bug,或我做一些錯了嗎?
通過內聯switch語句不會獲得任何結果,您應該將'getOrdinal'方法分開並讓代碼調用它。嘗試將11,12或13傳遞給您的代碼。還有另一個你創建的bug。 –
我希望我可以給@TimBender更多+1。這個問題是貨物崇拜節目的定義。 – CanSpice
R T F M。 。 。 。 。 – dokaspar