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即可,當然,一般的的問題也不會這么簡單,但是明白了這個道理以后,是不是可以更好的處理問題了呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM