iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

突然冒出的自學計畫系列 第 8

#Day8 用switch解題篇

  • 分享至 

  • xImage
  •  

接續昨天,這裡是成績分級題目進化史ㄉ下半部(?

前面是基礎款if else,這篇會有 switch (後來發現switch就夠一篇ㄌ)
那就開始叭


3.switch

重複一下前幾天ㄉ文:switch就是從if else的無限二分法變成一次就分類好
不過我真的動手寫的時候發現,題目給的示範並不是做成績分級,而是當輸入"A",會輸出"成績優良"
也就是說,switch似乎是限定於一個輸入對應到一個輸出,沒辦法像if else 一樣給出如(a<=80)這樣的條件範圍。
因此為了達成成績分級的目標,我改變成以下寫法:

string g = Console.ReadLine();
switch (g)
{    
    case "90":
        Console.WriteLine("A");
        break;
    case "80":
        Console.WriteLine("B");
        break;
    case "70":
        Console.WriteLine("C");
        break;
    case "60":        
        Console.WriteLine("D");
        break;
    default:
        Console.WriteLine("F");
        break;
}

也就是只能取每個級分的一個數字做為分級標準。

那如果介面做好,例如先輸出"只能無條件捨去後填入0結尾的整數"這樣當然還是可以做分級,但與前面的if else 相比就不太方便了。

我們可以動點手腳處理掉這個部分:

int g = int.Parse(Console.ReadLine());
int t = g % 10;
g -= t;
string i = g.ToString();
switch (i)
{
    case "90":
        Console.WriteLine("A");
        break;
    ...    
    default:
        Console.WriteLine("F");
        break;
}

也就是我們直接幫輸入值去尾,就可以坐到前面if else一樣的效果。
不過老實說,這樣還不如直接用if else就好QQ

註:我自己也還在摸索中,如果有大大看到錯的地方歡迎指正!超級歡迎大家教我(X


上一篇
#Day7 練習題之if else
下一篇
#Day9 更多的switch與嘗試失敗的enum
系列文
突然冒出的自學計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言