除了使用簡單if和多重if之外,還可以將整個if塊插入另一個if塊中,這種結構稱為嵌套if。嵌套if主要用於只有當前提條件滿足時,才判斷後續條件是否滿足。例如:一個活動計劃的安排,如果今天是工作日,則去上班,如果今天是周末,則外出遊玩;同時,如果周末天氣晴朗,則去室外遊樂場遊玩,否則去室內遊樂場遊玩。
嵌套if結構的語法如下:
在編寫嵌套if結構時,有時會引發一些疑問,下面是一個例子:
按條件語句的語法形式,上面的例子似乎有兩種可能的解釋,第一種理解:外層的if是一個沒有else部分的條件語句,最後的else部分屬於內層的if語句;第二種理解:內層if是一個不帶else部分的條件語句,最後的else屬於外層的if條件語句。
為了避免這種二義性,Java語言規定,每個else部分總是屬於前面最近的那個缺少對應的else部分if語句。根據這一規定,上面的例子第一種解釋是正確的,第二種解釋是不正確的。
因此,在編寫代碼時,儘量把嵌入的if語句塊用「{」和「}」括起來,避免發生理解上的二義性。如果我們真的需要寫出具有第二種意義的嵌套條件語句,那麼,就應該採用下面的寫法:
示例1:編寫一個程序,要求用戶輸入兩個數值,通過嵌套if結構判斷兩個數值的大小,並輸出相應信息。
在D盤Java目錄下,新建「EmbedSample.java」文件。用記事本打開「EmbedSample.java」文件,輸入以下代碼:
代碼結構分析
程序功能主要是演示嵌套if結構的使用。
採用嵌套結構實質上是為了進行多分支選擇,判斷兩個數值的大小實際上有三種選擇,即num1=num2、num1<num2或num1>num2,這種問題用if-else-if結構也可以完成,而且程序更加清晰。因此,在一般情況下,較少使用if的嵌套結構,以使程序更便於閱讀和理解。
編譯「EmbedSample.java」文件,在命令行窗口輸入「javac EmbedSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java EmbedSample」運行Java程序,命令行窗口顯示如下信息:

從上述結果可以看出,輸入相同或不同的兩個數值,程序能夠正確判斷兩個數值的大小。
在編寫代碼時,如果要使用嵌套if結構,儘量把嵌入的if語句塊用「{」和「}」括起來,一方面可以提高代碼的可理解性和易讀性;另一方面也可以預防因if和else匹配錯誤,使程序發生不可預知的結果,增加程序調試難度。
編寫一個程序,要求用嵌套if結構實現。提示用戶輸入用戶名,然後再提示輸入密碼。如果用戶名是"admin"並且密碼是「888888」,則提示輸入正確,否則提示輸入錯誤。