//整體代碼部分(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); } } //注:方法二整體代碼邏輯思維較為復雜,現在是在三個數排序,如果是四個數排序,使用這種方法幾乎無法操作 //以上兩種方法僅適用於數值較少時進行排序,如排序數值較多則不便使用; //排序數值較多的情況下,可將其存儲在定義好的數組中,利用數組的冒泡或選擇排序會更為簡便 } }