1. 程式人生 > >if-else判斷語句中經常犯的一個錯誤

if-else判斷語句中經常犯的一個錯誤

假設題目為:隨便給定一個數,三種情況:(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即可,當然,一般的的問題也不會這麼簡單,但是明白了這個道理以後,是不是可以更好的處理問題了