//整体代码部分(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);
}
}
//注:方法二整体代码逻辑思维较为复杂,现在是在三个数排序,如果是四个数排序,使用这种方法几乎无法操作
//以上两种方法仅适用于数值较少时进行排序,如排序数值较多则不便使用;
//排序数值较多的情况下,可将其存储在定义好的数组中,利用数组的冒泡或选择排序会更为简便
}
}