一行代码求出三个数中的最大值(Java三元操作符)

如何求出三个数中的最大数?

首先我们来看版本一:

/**
 * @author guqueyue
 * @Date 2020/2/15
 * 求三个数中的最大数
 * 版本一
 **/
public class ThreeMax1 {
    public static void main(String[] args) {
        // 随机产生三个固定序列的0-100之间的整数
        Random random = new Random(47);
        int a = random.nextInt(101);
        int b = random.nextInt(101);
        int c = random.nextInt(101);
        System.out.println("生成的三个整数为:" + a + ", " + b + ", " + c);

        // 假定a为最大值
        if (a < b)
            a = b;
        if (a < c)
            a = c;
        System.out.println("最大数为:" + a);
    }
}

运行结果:
在这里插入图片描述

那么如何用一行代码求出三个数中的最大数?

首先我们要了解Java三元操作符的概念

三元操作符也称为条件操作符,其表达式采用如下形式:
boolean-exp ? value0 : value1
若boolean-exp(布尔表达式)的值为true,就计算value0;
若boolean-exp(布尔表达式)的值为false,就计算value1;
并且这个计算结果就是操作符最终产生的值

/**
 * @author guqueyue
 * @Date 2020/2/15
 * 三元操作符和if-else可以互相替换,但是三元运算符要更加简洁
 **/
public class TernaryIfElse {
    static int ternary(int i) {
        return i < 10 ? i * 100 : i * 10;
    }
    static int standardIfElse(int i) {
        if (i < 10)
            return i * 100;
        else
            return i * 10;
    }

    public static void main(String[] args) {
        System.out.println(ternary(9));
        System.out.println(ternary(10));
        System.out.println(standardIfElse(9));
        System.out.println(standardIfElse(10));
    }
}

运行结果是一样的:
在这里插入图片描述

那么接下来我们便可以一行代码求出三个数中的最大值

/**
 * @author guqueyue
 * @Date 2020/2/15
 * 求三个数中的最大数
 * 版本二:运用三元操作符 if-else
 **/
public class ThreeMax2 {
    public static void main(String[] args) {
        // 随机产生三个固定序列的0-100之间的整数
        Random random = new Random(14);
        int a = random.nextInt(101);
        int b = random.nextInt(101);
        int c = random.nextInt(101);
        System.out.println("生成的三个整数为:" + a + ", " + b + ", " + c);

        // 假定a为最大值, 用三目运算符求出最大值,赋值给a
        a = (a > b && a > c) ? a : ((b > c) ? b : c);
        System.out.println("最大值为:" + a);
    }
}

大功告成,运行结果如下:
在这里插入图片描述

发布了2 篇原创文章 · 获赞 6 · 访问量 256

猜你喜欢

转载自blog.csdn.net/Qizhi_Hu/article/details/104335042
今日推荐