使用if语句对四个整数排序及三目运算符对三个整数的排序
代码在最后
三目运算符
语法格式 [x > y ? x : y]
布尔值 ? 值1: 值2; 会返回一个结果,结果是 值1 或 值2 , 值1 和 值2 的类型可以不同
运算规则:先确定布尔值是真还是假 , 是真整个表达式结束返回值1作为表达式的结果 , 反之结束表达式 以值2作为表达式的结果 ;
使用三元运算符可以代替简单的if语句 ;
三元表达式的返回值结果:
值1 值2 可以是任意类型 , 两个值可以是不同类型 ;但是接收的时候会有问题 ;
if语句
if条件语句是使用布尔表达式或布尔值作为分支条件来进行分支控制;
第一种形式:单选择结构
语法格式:
if(布尔表达式){
//如果表示式结果为true,则执行该语句块;如果为false,则跳过该语句块向下执行;
}
执行流程 : 先确定小括号里的值 , 如果值为true 那么执行后面大括号的所有内容 , 执行完毕后结束整个 if 语句
如果值为 false ; 不执行大括号的内容 , 直接结束if语句 ;
第二种形式:双选择结构 双分支if
语法格式:
if(布尔表达式){
//如果布尔表达式结果为true,则执行该语句块;
}else{
//如果布尔表达式结果为false,则执行该语句块;
}
执行规则:当程序遇到双分支if时 , 此时if else是一个整体 ;
程序会首先判断if后小括号的值 , 如果值
为真 : 执行if后的语句块 , 语句块完毕之后 结束整个if语句
为假 : 执行else后的语句块 , 语句块完毕之后 结束整个if语句
第三种形式:多选择结构 多分支if
语法格式:
if(布尔表达式1){
//如果布尔表达式1结果为true,则执行该语句块1;
}else if(布尔表达式2){
//如果布尔表达式2结果为true,则执行该语句块2;
}
...
else if(布尔表达式n){
//如果布尔表达式n结果为true,则执行该语句块n;
else{
//如果以上条件都为false,则执行该语句块n+1;
// 可选语句 接盘语句
}
执行流程:
当程序执行遇到多分枝if时 , 它们是一个整体 ;
会首先判断第一个if后小括号的值 , 如果值为真 : 执行其后的第一个语句块 ; 语句块执行完毕之后 结束整个if语句
(1)为假 : 去判断 下一个if后的小括号 , 如果值 (2)为真 : (1) 为假 : (2)多分支if可能需要进行多次判断 , 才能执行语句块 ;
else 为可选语句 , 当所有的if 都判断条件不成立 , 则会执行else 语句 , 执行完毕结束整个if语句
.
完整代码:
package day02;
import java.util.Scanner;
//2019/03/09 9:35
public class TestSort {
public static void main(String[] args){
// show1();
show2();
}
/**
* 使用if语句对三个整数排序
*/
public static void show2(){
System.out.println("TestSort.show2()");
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
System.out.println("请输入第三个整数:");
int z = sc.nextInt();
System.out.println("请输入第四个整数:");
int xyz = sc.nextInt();
System.out.println("录入的数据是: " + xyz + "," + x + "," + y + "," + z);
//if语句排序
int sum = 0;
{ //把xyz变成最小数
if(xyz > x){
sum = xyz;
xyz = x;
x = sum;
}
if(xyz > y){
sum = xyz;
xyz = y;
y = sum;
}
if(xyz > z){
sum = xyz;
xyz = z;
z = sum;
}
}
{//这段代码把x变成次小数
if(x > y ){
sum = x;
x = y;
y = sum;
}
if(x > z){
sum = x;
x = z;
z = sum;
}
}
if(y > z){
sum = y;
y = z;
z = sum;
}
System.out.println("排序的数据是: " + xyz + "," + x + "," + y + "," + z);
}
/**
* 三目运算符对三个整数的排序
*/
public static void show1(){
//syst 快捷键
System.out.println("TestSort.show1()");
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
System.out.println("请输入第三个整数:");
int z = sc.nextInt();
//声明是三个变量 分别是 最小值 中间值 最大值
int min,mid,max;
System.out.println(" 录入的数字是:" + x + "," + y + "," + z);
//确定最小值
min = x >= y ? (y >= z ? z : y):(x >= z ? z : x);
max = x >= y ? (x >= z ? x : z) :(y >= z ? y : z);
//中间数
// mid = x < max && x > min ? x : (y < max && y > min ? y : z);//1 1 3 出错,1 3 3 3,3,1 -> 1,1,3
// mid = (x == min || x == max) ? (y == min || y == max ? z :y) : x; //错误的判断方法
mid= x > y ? ( y > z ? y : ( x > z ? z : x )) : ( y < z ? y : (x > z ? x : z)); //方法一
// mid = (x + y + z) - (min + max); //方法二
System.out.println(" 排序的数字是:" + min + "," + mid + "," + max);
}
}