java三木
‘壹’ java三个条件选一个
Java中可以使用三目运算码皮腊符来从三个选项中选择一个,语法为:[condition] ? [option 1] : [option 2] : [option 3] 。其中,如果 condition 为 true,则选择 option 1;如果 condition 为 false,则会验证 option 2 的结果,如果 option 2 为迟滑 true,则选择 option 2;如果 option 2 为握李 false,则最终选择 option 3 。
‘贰’ 在JAVA中,什么是单目/双目/三目运算符
所谓单目运算符就是只有需要一个操作数的运算符,如:--、++同理,双目运算符就是需要两个操作数的运算符,如:+、-、*、/、=
等。三目运算符只有一个
?
:
。(需要三个操作数)
‘叁’ java三目运算符
看到复杂嵌套的三目运算不要慌,慢慢的一层层剖析你会发现其实也就那样。
根据三目定义 exp?st1:st2,exp的结果是个boolean类型的数据,如果是true则执行st1,如果为false则执行st2,所以 三目等价于if(exp){st1}else{st2},由此可见上述你给的可以更改成如下代码:
if(year>a.year){
迟拿做return1;
}else{
if(year<a.year){
return-1;
}else{
if(month>a.month){
return1;
}else{
if(month<a.month){
return-1;
}else{
if(day>a.day){
return1;
}else{
if(day<a.day){
return-1;
}else{
敏塌return0;
}
}
}
}
}
码衡}
‘肆’ 如何使用三目运算符编写一个JAVA程序,找出三个数中的最小值
我这颂亩轿里是用野肆的float型 当然你要对输入的类型有其它要求耐睁可以自行更改,代码如下:x0dx0aimport java.util.Scanner;x0dx0ax0dx0apublic class J x0dx0a{x0dx0a public static void main(String [] args)x0dx0a {x0dx0a Scanner scan=new Scanner(System.in);x0dx0a while(scan.hasNext())x0dx0a {x0dx0a float a=scan.nextFloat();x0dx0a float b=scan.nextFloat();x0dx0a float c=scan.nextFloat();x0dx0a float d=Math.min(a, b);x0dx0a float min=(d-c)>0?c:d;x0dx0a x0dx0a System.out.println(min);x0dx0a }x0dx0a }x0dx0a}
‘伍’ java中三目运算符
先学java的叫它,三元运算符;先学c的叫它三目运算符
即( ?: )
如名字表示的三元运算符需要三个操作数。
语法为:条件表达式?表达式1:表达式2。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果为真执行第一个,否则执行第二个。”
‘陆’ java怎么用三目运算符,输入任意比较三个数大小,输出中间数
int comp(int a, int b, int c)
{
return a >= b ? (a >= c ? (b >= c ? b : c) : a) : (a >= c ? a : (b >= c ? c : b));
}
‘柒’ 三目运算符 java
这是编译器的自动装箱/拆箱转换引起的问题,
自动装箱/拆箱的特性,只要一个运算中有不同的类型,涉及到类型转换,那么编译器会往下(基本类型)转型,再进行运算。 就是说,如果运算中有int和Integer,Integer会先转成int再计算。
所以你的代码中,最后一行
i = StringUtils.isEmpty(ComNo)?RecordType:0;
实际的运行会是这样 i = StringUtils.isEmpty(ComNo)?RecordType.intValue():0;
RecordType为null,所以会报错。
可以改成:i = StringUtils.isEmpty(ComNo) ? RecordType : Integer.valueOf(0);
保持类型的一致就不会自动转型了
‘捌’ java三目运算符
1、三目运算符 (表达式1)?(表达式2):(表达式3),计算方法是这样的:表达式1是一个逻辑表达式游中,如果其值为true,则整个表达式的值为表达粗搭式2的值,否则为表达式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);结果为i = 8.因为5 > 3为true,所以i = 5 + 3.
3、根据三目运算符的岩磨拿从右到左的结合性,我是这样划分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以应该从最右边的那个表达式开始计算,结果应该是1、0、-1中的一个值。
以上纯属个人理解。没搞清楚你这个算法到底是什么意义。。。。还有你的compare()方法不能声明为静态。
‘玖’ java三目运算符
编写代码就是一句一句的赋值语句,三目运算最终得到的是卜悔棚一个结果,要把赋给一个变量才行。你这种写前带法也是行不通,你这代码表现出来的意图是在三目运算中输出,你应该改为将String字符串作为三目运算的结果,最后再输出,一型则句话,编译器没那么牛,还解释不了你现在这样的代码。
String result = i%4==0?(i%100==0?(i%400==0?
"This year is a leap year":
"This year is not a leap year"):
"This year is a leap year"):
"This year is not a leap year";
System.out.println(result);
‘拾’ java 三目运算符
其实这主要是JAVA重载和基本数据类型自动转型造成的。
JAVA重载:这里主要调用了println(char x) 和println(int x) 两个方法。
基本数据类型自动转型原则中有一条:有多种类型混合运算时,系统将所有类型转换为大的,然后再进行计算。
自动转型顺序:
byte->short(char)->int->long->float->double.
还有0~65535可以认为是int也可以是char。
System.out.println(true?x:0);此处0被认为是char,所以输出b,倘若把0改为65536,则输出66.
同理
System.out.println(true?x:1111111110);此处1111111110已经大于了65535,所以x被自动转型为int再输出,输出66.
System.out.println(false?i:x);也是同理,将x转换为int,输出 66.
其实我讲得也不是非常详细,有兴趣可以仔细看下重载和基本数据类型转型的章节,希望能帮到你。