2016-02-04 49 views
-4

即時通訊新的C#,我只是想通過使它切換語句來清理它。我會如何將它變成switch語句?謝謝

int studTempGrade = Console.ReadLine(); 

if (studTempGrade >= 90 & studTempGrade <= 200) 
{ 
    aGrades= aGrades+1; 
} 

if (studTempGrade >= 80 & studTempGrade <= 89) 
{ 
    bGrades = bGrades + 1; 
} 

if (studTempGrade >= 70 & studTempGrade <= 79) 
{ 
    cGrades = cGrades + 1; 
} 

if (studTempGrade >= 60 & studTempGrade <= 79) 
{ 
    dGrades = dGrades + 1; 
} 

if (studTempGrade >= 0 & studTempGrade <= 59) 
{ 
    fGrades = fGrades + 1; 
} 
+3

在'switch()case {}上做一個簡單的google搜索'' – MethodMan

+3

[Switch type case c#]的可能重複(http://stackoverflow.com/questions/7252186/switch-case-on-type-c -sharp) –

+0

@RyanGarvin請閱讀以下鏈接[如何提問](http://stackoverflow.com/questions/ask)還注意到'SO'不是代碼工廠的網站。您可以通過尊重地使用Google來節省您自己的很多頭痛。 – MethodMan

回答

1

不幸的是,真的不是一個簡單的方法來使用switch語句來做到這一點。切換案例只允許使用常量表達式,而不是一般的表達式。這意味着,你不能這樣做:

switch(val) 
{ 
    case 0 - 9: 
     doThis(); 
     break; 
    case 10 - 20: 
     doThat(); 
     break; 
    default: 
     break; 
} 

C#不允許這樣的事情,雖然它會很好。爲了達到你想要的開關,你必須放下所有200個案例(即從0到200的等級值)。意思是,你會這樣:

switch(value) { 
    case 0: 
    case 1: 
    case 2: 
    case 3: 
    case 4: 
    case 5: 
    case 6: 
    case 7: 
    case 8: 
    case 9: 
    case 10:   
     // do something 
     break; 
    case 11: 
    case 12: 
    case 13: 
    case 14: 
    case 15: 
    case 16: 
    case 17: 
    case 18: 
    case 19: 
    case 20: 
     // do something 
     break; 
    case 21: 
    case 22: 
    case 23: 
    case 24: 
    case 25: 
    // ...and so on, you get the idea... 

} 

你正在做的,這是好的方式,有什麼不對if語句。但是,我建議使用else if作爲隨後的if報表。所以,你會擁有這樣的:

int studTempGrade = Console.ReadLine(); 

if (studTempGrade >= 90 & studTempGrade <= 200) 
{ 
    aGrades= aGrades+1; 
} 
else if (studTempGrade >= 80 & studTempGrade <= 89) 
{ 
    bGrades = bGrades + 1; 
} 
else if (studTempGrade >= 70 & studTempGrade <= 79) 
{ 
    cGrades = cGrades + 1; 
} 
else if (studTempGrade >= 60 & studTempGrade <= 79) 
{ 
    dGrades = dGrades + 1; 
} 
else if (studTempGrade >= 0 & studTempGrade <= 59) 
{ 
    fGrades = fGrades + 1; 
} 

這將導致你的程序是導致是true第一個表達式後離開if結構,從而節省了時間。

+0

這可以通過去除花括號來進一步減少 – Spidey