if-else判斷語句中經常犯的一個錯誤
阿新 • • 發佈:2019-06-17
假設題目為:隨便給定一個數,三種情況:(1)若小於0,輸出為“小於0”;(2)若在0-50之間,則輸出“在0-50之間”。(3)若大於50,則輸出“大於50”。
解法:如果我這麼寫,執行一下看看。
int x = Convert.ToInt16(Console.ReadLine()); if (x>50) { Console.WriteLine("超過50"); } if(x>0 && x<50) { Console.WriteLine("在0到50之間"); } else { Console.WriteLine("小於0"); }
當輸入小於0和0-50之間的數時,均正常輸出,但是!!!當輸出大於50的時候,就出現瞭如上圖所示的問題:輸入59以後,不但輸出了超過50,還輸入了小於0,這顯然不是我要的結果!!!
為何呢?這就涉及else的執行原理了:else會在上一個if判斷為false時執行!!這時候可以把else和他最鄰近的上一個if組成一對。
所以,該題目程式碼可修改為:
int x = Convert.ToInt16(Console.ReadLine()); if (x>50) { Console.WriteLine("超過50"); } else if(x>0 && x<50) { Console.WriteLine("在0到50之間"); } else { Console.WriteLine("小於0"); }
僅僅只需要在第二個if前加一個else即可,當然,一般的的問題也不會這麼簡單,但是明白了這個道理以後,是不是可以更好的處理問題了