C語言中文網 目錄

Java if else語句詳解

< 上一頁Java語句 Java switch case語句下一頁 >

選擇結構(也叫分支結構)解決了順序結構不能判斷的缺點,可以根據一個條件判斷執行哪些語句塊。選擇結構適合于帶有邏輯或關系比較等條件判斷的計算。例如,判斷是否到下班時間,判斷兩個數的大小等。

if 語句是使用最多的條件分支結構,它屬于選擇語句,也可以稱為條件語句。下面將詳細介紹 if 語句的各種形式及其用法。

if 語句語法

if 選擇結構是根據條件判斷之后再做處理的一種語法結構。默認情況下,if 語句控制著下方緊跟的一條語句的執行。不過,通過語句塊,if 語句可以控制多個語句。

if 語句的最簡語法格式如下,表示“如果滿足某種條件,就進行某種處理”。
if ( 條件表達式)
{
    語句塊;
}

其中“條件表達式”和“語句塊”是比較重要的兩個地方。
  1. 條件表達式:條件表達式可以是任意一種邏輯表達式,最后返回的結果必須是一個布爾值。取值可以是一個單純的布爾變量或常量,也可以是使用關系或布爾運算符的表達式。如果條件為真,那么執行語句塊;如果條件為假,則語句塊將被繞過而不被執行。
  2. 語句塊:該語句塊可以是一條語句也可以是多條語句。如果僅有一條語句,可省略條件語句中的大括號{}。

if 條件語句的運行流程如圖 1 所示。


圖1  if 語句執行流程圖

例 1

編寫一個 Java 程序,允許用戶從鍵盤輸入一個數字,再判斷該數是否大于 100。使用 if 語句的實現代碼如下:
import java.util.Scanner;
public class Test07
{
    public static void main(String[] args)
    {
        System.out.println("請輸入一個數字:");
        Scanner input=new Scanner(System.in);
        int num=input.nextInt(); // 接收鍵盤輸入數據
        if(num>100)    //判斷用戶輸入的數據是否大于100
            System.out.println("輸入的數字大于100");
        if(num==100)    //判斷用戶輸入的數據是否等于100
            System.out.println("輸入的數字等于100");
        if (num<100)    //判斷用戶輸入的數據是否小于100
            System.out.println("輸入的數字小于100");
    }
}

運行該程序,分別使用鍵盤輸入 99、100 和 105,結果如下所示:
請輸入一個數字:
99
輸入的數字小于100
請輸入一個數字:
100
輸入的數字等于100
請輸入一個數字:
105
輸入的數字大于100

例 2

假設有 num1 和 num2 兩個變量,它們的值分別是 50 和 34。下面編寫程序,要求使用 if 語句判斷 num1 和 num2 的大小關系,并輸出比較結果。

其實現代碼如下:
public static void main(String[] args)
{
    int num1=50;
    int num2=34;
    if(num1>num2)
        System.out.println("num1大于num2");
    if(num1==num2)
        System.out.println("num2等于num2");
    if(num1<num2)
        System.out.println("num1小于num2");
}
該段選擇語句判斷了 num1 值和 num2 值的大于、等于和小于關系。此處 num1 為 50,num2 為 34,所以執行后會輸出“num1 大于 num2”。

例 3

在上述兩個案例代碼中,由于每個 if 語句的語句塊中只包含一條語句,所以省略了大括號。本實例在登錄系統中要求用戶名、密碼和驗證碼都必須正確,否則將顯示登錄失敗及錯誤提
示。其中的語句塊有多條語句,所以需要使用大括號。代碼如下:
public static void main(String[] args)
{
    String username="admin";    //用戶名
    String userpass="123456";    //密碼
    String code="0000";    //驗證碼
    if(username!="admin"&&userpass!="123456"&&code!="0000") //比較
    {
        System.out.println("登錄失敗!");
        System.out.println("請檢查輸入的用戶名、密碼和驗證碼是否正確!");
    }
}

在這里為 if 語句設置了一個復雜的復合表達式來驗證登錄條件。執行后的輸出結果如下:
登錄失敗!
請檢查輸入的用戶名、密碼和驗證碼是否正確!

雙條件 if 語句

單 if 語句僅能在滿足條件時使用,而無法執行任何其他操作(停止)。而結合 else 語句的 if 可以定義兩個操作,此時的 if…else 語句表示“如果條件正確則執行一個操作,否則執行另一個操作”。

使用 if…else 語句的語法格式如下所示:
if ( 表達式)
{
    語句塊1;
}
else
{
    語句塊2;
}

在上述語法格式中,如果 if 關鍵字后面的表達式成立,那么就執行語句塊 1,否則的話則執行語句塊 2,其運行流程如圖 2 所示。


圖2  if…else 運行流程

例 4

在例 3 中為實現比較 num1 和 num2 的大小,使用了 3 個 if 條件語句分別判斷大于、等于和小于的情況。下面使用 if…else 雙條件來實現,具體代碼如下:
public static void main(String[] args)
{
    int num1=50;
    int num2=34;
    if(num1==num2)    //如果等于
        System.out.println("num1等于num2");
    if(num1>num2)    //如果大于
        System.out.println("num1大于num2");
    else    //否則就是小于
    System.out.println("num1小于num2");
}

雙條件語句減少了代碼的編寫量,同時增強了程序的可讀性。簡化后的結果還是一樣,執行后會輸出“num1 大于 num2”。

多條件 if 語句

if 語句的主要功能是給程序提供一個分支。然而,有時候程序中僅僅多一個分支是遠遠不夠的,甚至有時候程序的分支會很復雜,這就需要使用多分支的 if…else if 語句。

通常表現為“如果滿足某種條件,就進行某種處理,否則如果滿足另一種條件才執行另一種處理……,這些條件都不滿足則執行最后一種條件”。

if…else if 多分支語句的語法格式如下所示:
if(表達式1)
{
    語句塊1;
}
else if(表達式2)
{
    語句塊2;
}
...
else if(表達式n)
{
    語句塊n;
}
else
{
    語句塊n+1;
}

在上述語法格式中,使用 if…else if 語句時,依次判斷表達式的值,當某個分支的條件表達式的值為 true 時,則執行該分支對應的語句塊,然后跳到整個 if 語句之外繼續執行程序。如果所有的表達式均為 false,則執行語句塊 n+1,然后繼續執行后續程序,其運行流程如圖 3 所示。


圖3  if…else if 語句的執行流程

例 5

同樣以比較 num1 和 num2 的大小為例,使用 if…else if 多條件的實現代碼如下:
public static void main(String[] args)
{
    int num1=50;
    int num2=34;
    if(num1==num2)    //如果等于
        System.out.println("num1等于num2");
    else if(num1>num2)    //如果大于
        System.out.println("num1大于num2");
    else    //否則就是小于
    System.out.println("num1小于num2");
}

如上述代碼所示,num1 和 num2 不滿足 if 語句的“num1==num2”條件;接著測試 else if 的“num1>num2”條件,滿足該條件并輸出“num1 大于 num2”。

例 6

假設某學校對成績的判斷標準是:不低于 90,可以評為優秀;低于 90 但不低于 80,可以評為良好;低于 80 但不低于 60,可以評為中等;否則評為差。

下面輸入一個分數,使用多條件 if 語句輸出對應等級的功能。實現代碼如下:
public static void main(String[] args)
{
    System.out.println("請輸入考試成績:");
    Scanner input = new Scanner(System.in);
    int score = input.nextInt();    //接收鍵盤輸入數據
    if(score>=90)
    {    //考試成績>=90
        System.out.println("優秀");
    }
    else if(score>=80)
    {    //90>考試成績>=80
        System.out.println("良好");
    }
    else if(score>=60)
    {    //80>考試成績>=60
        System.out.println("中等");
    }
    else
    {    //考試成績<60
    System.out.println("差");
    }
}

當考試成績為 90 分以上時,則執行第一個 if 語句,下面的 3 個條件判斷語句不會執行;當考試成績為 80 分以上 90 分以下時,則執行第一個 else if 語句;當考試成績在 60~80 分,并且包含 60 分的成績,則執行第二個 else if 語句;如果上述 3 個條件都不滿足,則執行 else 語句。

程序運行后的輸出效果如下所示:
請輸入考試成績:
100
優秀
請輸入考試成績:
88
良好
請輸入考試成績:
50
差

嵌套 if 的使用

if 語句的用法非常靈活,不僅可以單獨使用,還可以在 if 語句里嵌套另一個 if 語句。同樣,if…else 語句和 if…else if 語句中也可以嵌套另一個 if 結構的語句,以完成更深層次的判斷。

嵌套 if 的語法格式如下:
if(表達式1)
{
    if(表達式2)
    {
        語句塊1;
    }
    else
    {
        語句塊2;
    }
}
else
{
    if(表達式3)
    {
        語句塊3;
    }
    else if( 表達式4)
    {
        語句塊4;
    }
    else
    {
        if( 表達式n)
        {
            語句塊n;
        }
        else
        {
            語句塊n+1;
         }
    }
}

在上述格式中,應該注意每一條 else 與離它最近且沒有其他 else 對應的 if 相搭配,其執行流程如圖 4 所示。


圖4  嵌套 if 語句執行流程

例 7

假設某航空公司為吸引更多的顧客推出了優惠活動。原來的飛機票價為 3000 元,活動時,4~11 月旺季,頭等艙 9 折,經濟艙 8 折;1~3 月、12 月淡季,頭等艙 5 折,經濟艙 4 折,求機票的價格。

編寫 Java 程序實現代碼如下:
public static void main(String[] args)
{
    Scanner sc=new Scanner(System.in);
    System.out.println("請輸入出行的月份:");
    int month=sc.nextInt();
    System.out.println("選擇頭等艙還是經濟艙?數字1為頭等艙,數字2為經濟艙");
    int kind=sc.nextInt();
    double result=60000;    //原始價格
    //旺季的票價計算
    if(month<=11&&month>=4)
    {
        if(kind==1)
        {    //旺季頭等艙
            result=result*0.9;
        }
        else if(kind==2)
        {    //旺季經濟艙
            result=result*0.8;
        }
        else
        {
            System.out.println("選擇種類有誤,請重新輸入!");
        }
    }
    // 淡季的票價計算
    else if((month>=1&&month<=3)||month==12)
    {
        if(kind==1)
        {    //淡季頭等艙
            result=result*0.5;
        }
        else if(kind==2)
        {    //淡季經濟艙
            result=result*0.4;
        }
        else
        {
            System.out.println("選擇種類有誤,請重新輸入!");
        }
    }
    else
    {
        System.out.println("日期選擇有誤,請重新輸入!");
    }
    System.out.println("您選擇的機票價格為:"+result);
}

上面代碼將用戶輸入的月份保存到 month 變量,將機票種類保存到 kind 變量。接下來判斷變量 month 和 kind 的范圍。如果變量 month 在 4~11,kind 為 1 則執行 result=result*0.9,為 2 則執行 result=result*0.8;變量 month 在 1~3、12,kind 為 1 則執行 result=result*0.5,為 2 則執行 result=result*0.4。當用戶輸入有誤時,根據錯誤情況給予不同的提示。

旺季經濟艙出行的輸出結果如下所示:
請輸入出行的月份:
6
選擇頭等艙還是經濟艙?數字1為頭等艙,數字2為經濟艙
2
您選擇的機票價格為:48000.0
淡季頭等艙的輸出結果如下所示:
請輸入出行的月份:
2
選擇頭等艙還是經濟艙?數字1為頭等艙,數字2為經濟艙
1
您選擇的機票價格為:30000.0
< 上一頁Java語句 Java switch case語句下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo