【0001】通过三目(元)运算符对二个或者三个元素的数值比较大小输出实现,尤其是三目运算符的嵌套的理解_javascript中使用三元运算符比较两个数的大小-程序员宅基地

技术标签: 算法  java知识疑惑点  java  前端  java基础知识点  

【0001】通过三目(元)运算符对二个或者三个元素的数值比较大小输出实现,尤其是三目运算符的嵌套的理解


问题描述:

      当我们在使用三面运算符号的时候,一般涉及两个表达式大小关系的比较,甚至三个表达式关系比较,选择if选择结构实现三个数的比较就很  
 麻烦,而相对于使用选择结构选择三元运算符是更合理的选择。

三目运算符语法格式:

格式:条件表达式?值1:值2(条件表达式?True:False)

三目运算符嵌套语法格式:

格式:条件表达式?(条件表达式?值1:值2):(条件表达式?值1:值2)


举一个求数组中元素最小例子:

我这里举例是以三个数值运算通过三元运算符进行比较:
代码区如下:

        double min;
		double num[]=new double[3];
		num[0]=100;
		num[1]=150;
		num[2]=250;
		 min=num[0]<num[1]?num[0]<num[2]? num[0]:num[2]:num[1]<num[2]?num[1]:num[2];
		 //如果理解不了可以使用加上加括号的情况,和下面语句等价的
		 //min=num[0]<num[1]?(num[0]<num[2]? num[0]:num[2]):(num[1]<num[2]?num[1]:num[2]);

代码分析:

分析如下:

       1.首先解释顺序从左向右num[0]<num[1]?,第一个假设num[0]更小,
       则继续执行num[0]<num[2]?,又第二个假设num[0]更小,输出表达式num[0];其冒号之后的属于表达式2的内容;
       2.如果第一个假设不成立的话,直接跳到冒号之后的属于表达式2的内容,这个时候其实就知道
       num[0]不可能是最小的了,num[1]可能会成为最小值,于是继续执行num[1]<num[2]?,如果最小就输出表达式num[1],否则输出num[2];
       3.其实加上了花括号更容易理解:num[0]<num[1]?(num[0]<num[2]? num[0]:num[2]):(num[1]<num[2]?num[1]:num[2]):从左向右执行num[0]<num[1]?,假设num[0]更小成立则执行第一个大括号(num[0]<num[2]? num[0]:num[2]),第一个花括号是判断num[0]与num[2]谁大谁小然后输出,否则执行第二个花括号(num[0]<num[2]? num[0]:num[2])第二个花括号是判断num[1]与num[2]谁大谁小然后然后输出即可
       
       有问题可底下下评论会及时回复!!!

我这里举例是以三个数值运算通过if条件判断进行比较输出最小最大值(这里不进行解释,以前的文章里有解释):
代码区如下:

        int a, b, c;
		a = 1;
		b = 9;
		c = 101;
		if(a==b&&a==c&&b==c)
			System.out.println("无最大值最小值" );
		if (a >=b) {
    
			if (a > c) {
    
				System.out.println("输出最大数:" + a);
				if (b > c) {
    
					System.out.println("第二大的数:" + b);
					System.out.println("最小的数:" + c);
				} else {
    

					System.out.println("最小的数:" + c);
					System.out.println("第二大的数:" + b);
				}
			} else {
    

				System.out.println("输出最大数:" + c);
				System.out.println("第二大的数:" + a);
				System.out.println("最小的数:" + b);
			}
		}
		else {
    
			if (b > c) {
    
				System.out.println("输出最大数:" + b);
				if (a > c) {
    
					System.out.println("第二大的数:" + a);
					System.out.println("最小的数:" + c);
				} else {
    

					System.out.println("最小的数:" + c);
					System.out.println("第二大的数:" + a);
				}
			} else {
    

				System.out.println("输出最大数:" + c);
				System.out.println("第二大的数:" + b);
				System.out.println("最小的数:" + a);
			}
		}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Caojian_0/article/details/125434772

智能推荐

前端设置条件限制form表单提交到后端解决方案_jsp前端页面将表单是否提交成功作为限制条件-程序员宅基地

文章浏览阅读375次。<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script> <script type="text/javascript"> function checkName() { var name = document.getElementB..._jsp前端页面将表单是否提交成功作为限制条件

计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe-程序员宅基地

文章浏览阅读1k次。Sequence Numberlzyws7393074532892018-04-25Number Sequenceqq_391789932452017-09-21理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)hebbely9822017-01-14Number Sequence(规律)l25336363712902017-07-18Numb..._ack num

计算机系统启动项设置密码,电脑开机第一道密码怎么设置 - 卡饭网-程序员宅基地

文章浏览阅读5.9k次。笔记本电脑怎么进CMOS密码巧设置笔记本电脑怎么进CMOS密码巧设置 笔记本电脑为了保护用户的数据安全,往往采用加密的方式,最常见的还是CMOS密码加密技术。为了让你的重要数据更加安全,你可能需要设置不同的密码,这也就要求你记住许多密码。对于笔记本电脑用户来说,真的需要设置一道道密码关卡吗?非也非也! 一、认识与设置笔记本电脑的CMOS密码 笔记本电脑的CMOS密码大致分为超级密码(Supervi..._电脑第一道密码修改

VulnHub靶机-Jangow: 1.0.1_jangow01-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏5次。迟到的文章,就当库存发出来吧~_jangow01

spark实战之RDD的cache或persist操作不会触发transformation计算_spark cache和persist不生效-程序员宅基地

文章浏览阅读1.7w次,点赞2次,收藏5次。默认情况下RDD的transformation是lazy形式,实际计算只有在ation时才会进行,而且rdd的计算结果默认都是临时的,用过即丢弃,每个action都会触发整个DAG的从头开始计算,因此在迭代计算时都会想到用cache或persist进结果进行缓存。敝人看到很多资料或书籍有的说是persist或cache会触发transformation真正执行计算,有的说是不会!敝人亲自实验了一把..._spark cache和persist不生效

html文字滚动_html滚动-程序员宅基地

文章浏览阅读2.4k次。HTML之marquee(文字滚动)详解语法:以下是一个最简单的例子:代码如下:Hello, World下面这两个事件经常用到:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动代码如下:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动 onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动这是一个完_html滚动

随便推点

信号发生器设计VHDL代码Quartus仿真_vhdl正弦波信号发生器-程序员宅基地

文章浏览阅读1k次,点赞20次,收藏22次。代码功能:信号发生器设计信号发生器由波形选择开关控制波形的输出,分别能输出正弦波、方汉和三角波三种波形,波形的周期为2秒(由40M有源晶振分频控制)。考虑程序的容量,每种波形在一个周期内均取16个取样点,每个样点数据是8位(数值范围:00000000~1111111)要求将D/A变换前的8位二进数据(以十进制方式)输出到数码管动态演示出来。_vhdl正弦波信号发生器

笔记-Java线程概述_java 线程概述-程序员宅基地

文章浏览阅读629次。Java Concurrency in Practice中对线程安全的定义:当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类就是线程安全的。显然只有资源竞争时才会导致线程不安全,因此无状态对象永远是线程安全的 。过多的同步会产生死锁的问题,死锁属于程序运行的时_java 线程概述

MATLAB从文件读取数据_matlab读取数据-程序员宅基地

文章浏览阅读1.2w次,点赞10次,收藏61次。读取表单Sheet2中部分信息。_matlab读取数据

【实践】基于spark的CF实现及优化_spark cf-程序员宅基地

文章浏览阅读1.4w次。最近项目中用到ItemBased Collaborative Filtering,实践过spark mllib中的ALS,但是因为其中涉及到降维操作,大数据量的计算实在不能恭维。所以自己实践实现基于spark的分布式cf,已经做了部分优化。目测运行效率还不错。以下代码package modelimport org.apache.spark.broadcast.Broadcastimp_spark cf

ijkplayer直播播放器使用经验之谈——卡顿优化和秒开实现_libijkplayer 播放直播流卡顿-程序员宅基地

文章浏览阅读1.8w次。 在我的博客移动平台播放器ijkplayer开源框架分析(以IOS源码为例),大致介绍了一下ijkplayer的基本函数调用顺序和主要线程作用,本博客想介绍一下在直播应用中,针对卡顿和秒开做的一些优化,本优化经验主要是用在Android系统上,ios上也可以借鉴,按本博客修改代码,网络带宽足够的情况下,音视频播放基本流畅不卡顿,首屏时间在500ms以内。 首先来看直播应用中的卡顿。直..._libijkplayer 播放直播流卡顿

数据挖掘实践(金融风控-贷款违约预测)(三):特征工程_金融风控(大数据)特征工程-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏28次。数据挖掘实践(金融风控-贷款违约预测)(三):特征工程目录数据挖掘实践(金融风控-贷款违约预测)(三):特征工程1.引言2.特征预处理2.1缺失值填充2.2时间格式处理2.3类别特征处理3.异常值处理3.1 检测异常的方法一:正态分布法3.2 检测异常的方法二:箱型图3.3异常值的处理方法4.数据分桶5.特征交互6.特征编码6.1 labelEncode 直接放入树模型中6.2 逻辑回归等模型要单独增加的特征工程7.特征选择7.1 Filter7.2 Wrapper (Recursive feature _金融风控(大数据)特征工程

推荐文章

热门文章

相关标签