这个需要你对编程的三元表达式有一定的基础。首先三元表达式并不只是针对java在其他语言中如JavaScript和Oracle以及其它语言中都可以使用。
第一点:三元表达式顾名思义就是三个表达式,第一个是判断条件结果只要是Boolean类型就可以,第二个是值或者表达式,第三个也一样,如果表达式一是true则执行值二,如果为false则为值三
public static void main(String[] args) {
boolean x = true;
boolean y = true;
System.out.println(x ? y ? 1 : 2 : 3);
}
添加上括号
public static void main(String[] args) {
boolean x = true;
boolean y = true;
System.out.println(x ? (y ? 1 : 2 ): 3);
}
拆分两步更容易理解:
只有一个:就是?号,表示选择!
结构:结果=判断式?表达式1:表达示2;
意示:如果判断式成立,结果取前者的值,反之,取后者值.
用途:可代替大部分选择结构!结构极为简单!
难点:多重选择,嵌套选择!
1.多重选择:
例如经典的按成绩分等级学生的问题:
int b=88;//表示学生成绩;
String a=b>90?"优等”:b>60?"中等":“差等”;
那么这个结果就是中等,多重选择适用于单一条件进行选择判断的情况,比如果这个只比成绩,先看分数是否大于90,不大于,选者:号后边的,就进入等二个表达式,看是否大于60,是,选者"中等"!了!
2.嵌套选者:用于多个条件综合选者时!
例如,经典问题,买机票分头等舱和经济舱,也分淡季和旺季!
分析:先在大结构选择里判断淡旺季,再在两个表达示中区分舱位(判断顺序反了也可)。
int a=6;//表示月份,1到12月皆可,假设5到10月为旺季;
int b=1;//表示舱位;
首先,外层选者结构样式:
String c=a<1||a>12?"输入错误":(a>=4&&a<=10?(表达式1):(表达式2));//这一步实现淡旺季判断,括号不要也可!
再分别在表达中填入舱种的判断;
表达式1:b=1?"打八折":b=2?"打五折":"输入错误"
表达式2:b=1?"打四折":b=2?"打二折":"输入错误"
总结构为:String c=a<1||a>12?"输入错误":(a>=4&&a<=10?(b=1?"打八折":b=2?"打五折":"输入错误"):(b=1?"打四折":b=2?"打二折":"输入错误"));
括号完全可以省略,保留只是为了让你结构清晰!
这样就对不同条件的选择进行了筛选!
ps :输出结果值的类型只能是同一种,不能实现既有int 类型,又有String 类型,学识尚浅,希望我的回答对楼主有所帮助!
条件运算符形式:
关系表达式 ? 表达式1 : 表达式2
求值规则:
求解关系表达式,根据关系表达式的布尔值决定取值:关系表达式的值为true时取表达式1的值;关系表达式的值为false时取表达式2的值。
说明:
1、条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。 2、JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。 3、结合性也是右结合性。 4、与C语言不同的是,JAVA中条件表达式的值必须参与运算。 public class demo {
public static void main(String[]args){
int a=10,b=20,y;
a>b?(y=a):(y=b;) //1,这样写是错误的
y=a>b?a:b; //2,这样写是正确的
y=a}
}
以上程序中,1处错误是由于条件表达式的值没有参与运算,不能构成语句。3处(b
Java种的条件运算符是指如下表达式: 关系表达式 ? 表达式1 : 表达式2,用来进行逻辑判断。
求解关系表达式,根据关系表达式的布尔值决定取值:关系表达式的值为true时取表达式1的值;关系表达式的值为false时取表达式2的值。
1、条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。
2、JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。
3、结合性也是右结合性。
4、与C语言不同的是,JAVA中条件表达式的值必须参与运算。例子如下:
publicclassdemo{
publicstaticvoidmain(String[]args){
inta=10,b=20,y;
a>b?(y=a):(y=b;)//1,这样写是错误的
y=a>b?a:b;//2,这样写是正确的
y=a}
}
java中的条件运算符即三目运算符,它是一个特殊的运算符,其语法形式如下:
布尔表达式?表达式1:表达式2
运算过程:如果布尔表达式的值为true,就返回表达式1的值,否则返回表达式2的值,例如:
int sum=90;
String str=sum<100 ? "失败" : "成功";
等价于下列代码:
String str=null;
if(num<100){
str="失败";
}else{
str="成功";
}
三目运算符和if……else语句相比,前者使程序代码更加简洁。