Java語句-判斷數值大小(求最值)以及排序


//整體代碼部分(Demo01類中編寫)

import java.util.Scanner;

public class Demo01 {
    //java語句-判斷數值大小(求最值)
    public static void main(String[] args) {
        //要求:鍵盤錄入三個數(a、b、c),求出其最大值並輸出
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入第一個數a:");
        int a = sc.nextInt();
        System.out.print("請輸入第二個數b:");
        int b = sc.nextInt();
        System.out.print("請輸入第三個數c:");
        int c = sc.nextInt();
        int temp;//引入中間變量用於數值交換
        //方法一(可以改變變量a、b、c中儲存的數值,利用if語句默認將最大的數值存儲在變量a當中並輸出):
        //(1)利用if語句使得a>=b
        if (a < b) {
            temp = a;
            a = b;
            b = temp;
        }
        //(2)利用if語句使得a>=c
        if (a < c) {
            temp = a;
            a = c;
            c = temp;
        }
        //(3)此時a>=b並且a>=c,故a為最大值,輸出最大值a
        System.out.println("最大值為:" + a);
        //注:方法一中可以默認將最大的數值儲存在任何一個變量中,都是相同的方法


        //方法二(不改變變量a、b、c中存儲的數值,利用if語句比較出最大值並輸出):
        //(1)首先比較a和b的大小
        if (a > b) {
            //(2)a>b已知,只要再將較大的a與c比較,便可獲得最大值
            if (a > c) {
                //(3)a>b且a>c,故a為最大值
                System.out.println("最大值為:" + a);
            } else {
                //(3)a>b且a<=c,故c為最大值
                System.out.println("最大值為:" + c);
            }

        } else {
            //(2)a<=b已知,只要再將較大的b與c比較,便可獲得最大值
            if (b > c) {
                //(3)a<=b且b>c,故b為最大值
                System.out.println("最大值為:" + b);
            } else {
                //(3)a<=b且b<=c,故c為最大值
                System.out.println("最大值為:" + c);
            }

        }

        //方法三(利用三元運算符比較數值大小):
        //(1)先求前兩個數的最大值mxa1
        int max1 = a > b ? a : b;
        //(2)再將max1與c作比較,求出最大值max
        int max = max1 > c ? max1 : c;
        //可將前兩步進行嵌套,直接得出最大值max=(a > b ? a : b) > c ? (a > b ? a : b) : c;
        //(3)輸出最大值max
        System.out.println("最大值為:"+max);

        //前兩種方法都利用了if語句進行判斷,第一種方法可以改變變量中儲存的數值,默認將最大值儲存在一個變量當中並輸出;
        //第二種方法則不改變變量中存儲的數值,利用if語句逐個比較,求出最大的數值並輸出,整體比較邏輯思維較為復雜。
        //以上是判斷數值大小(求最值)常用的三種方法,適用於比較數值較少的情況。
        //如果用於比較的數值太多,則可將數值儲存到定義好的數組中,利用數組遍歷求最值會更為簡便。

        //補充:
        //方法四(定義一個第三方變量,如:m,用來記錄比較過程中的較大值及最大值)
        //(1)定義一個變量m,並讓其默認儲存a當中的數值
        int m = a;
        //(2)利用if語句比較m和b中所儲存數值的大小,並確保m中儲存的為較大值
        if (b > m) m = b;//注:如果if語句中的語句體只有一句,則可以省略{}
        //(3)利用if語句比較m和c中所儲存數值的大小,並確保此時m中儲存的為最大值
        if (c > m) m = c;
        //(4)輸出最大值m
        System.out.println("最大值為:" + m);

    }
}
 
          
//整體代碼部分(Demo02類中編寫)
package Demo;

import java.util.Scanner;

public class Demo02 {
    //if語句-判斷數值大小並排序
    public static void main(String[] args) {
        //鍵盤錄入三個數值,比較大小后,按照由小到大的順序打印在控制台上
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入第一個整數:");
        int a = sc.nextInt();
        System.out.println("請輸入第二個整數:");
        int b = sc.nextInt();
        System.out.println("請輸入第三個整數:");
        int c = sc.nextInt();
        int temp;//引入中間變量用於兩個變量之間數值的交換
        //方法一:可以改變變量中存儲的數值,數值默認由小到大的排序為abc
        //(1)讓a中存儲的數值最小(三個變量中最小)  故需滿足:a<b且a<c
        if (a > b) {//保證a<b
            temp = a;
            a = b;
            b = temp;
        }
        if (a > c) {//保證a<c
            temp = a;
            a = c;
            c = temp;
        }
        //(2)讓b中存儲的數據為bc中最小的  故需滿足:b<c
        if (b > c) {
            temp = b;
            b = c;
            c = temp;
        }
        //(3)通過比較,可以將數值按照由小到大的順序分別存儲在abc三個變量當中,按照順序打印即可
        System.out.println("三個整數按照由小到大的順序排列為:" + a + b + c);
        //注:數值默認由小到大的變量排序(abc)是可以改變的,方法一樣,改變用於比較的變量名稱即可


        //方法二:不改變變量中存儲的數值,利用if語句進行比較,並按照由小到大的順序將數值打印在控制台上
        //(1)比較a和b的大小
        if (a > b) {
            //(2)比較a和c的大小
            if (a > c) {//a>b且a>c 故a為最大值
                // (3)再比較b和c的大小
                if (b > c) {//a>b且a>c且b>c
                    System.out.println("三個整數按照由小到大的順序排列為:" + c + b + a);
                } else {//a>b且a>c且b<c
                    System.out.println("三個整數按照由小到大的順序排列為:" + b + c + a);
                }

            } else {//a>b且a<c
                System.out.println("三個整數按照由小到大的順序排列為:" + b + a + c);
            }
        } else {//a<b
            //(2)比較b和c的大小
            if (b > c) {//a<b且b>c 故b為最大值
                //(3)再比較a和c的大小
                if (a > c) {//a<b且b>c且a>c
                    System.out.println("三個整數按照由小到大的順序排列為:" + c + a + b);
                } else {//a<b且b>c且a<c
                    System.out.println("三個整數按照由小到大的順序排列為:" + a + c + b);
                }
            } else {//a<b且b<c
                System.out.println("三個整數按照由小到大的順序排列為:" + a + b + c);
            }
        }
        //注:方法二整體代碼邏輯思維較為復雜,現在是在三個數排序,如果是四個數排序,使用這種方法幾乎無法操作

        //以上兩種方法僅適用於數值較少時進行排序,如排序數值較多則不便使用;
        //排序數值較多的情況下,可將其存儲在定義好的數組中,利用數組的冒泡或選擇排序會更為簡便


    }
}
 


免責聲明!

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



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