要求提供一个成绩,根据分数的多少判断成绩评价
表达式为:表达式1?表达式2:表达式3
先求解表达式1,
若其值为真(非0)则将表达式2的值作为整个表达式的取值,
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
例如:
1、max=(a>b)?a:b
就是将a和b二者中较大的一个赋给max。
2、min=(a<b)?a:b
就是将a和b二者中较小的一个赋给min。
优先级
例如:
⑴ m<n ? x : a+3
等价于:(m<n) ?(x) :(a+3)
⑵ a++>=10 && b-->20 ? a : b
等价于:(a++>=10 && b-->20) ? a : b
⑶ x=3+a>5 ? 100 : 200
等价于:x= (( 3+a>5 ) ? 100 : 200 )
当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。如果在问号和冒号之间还有一个问号或者冒号,应该满足就近配对,使结构不发生紊乱。
例如:
w < x ? x + w : x < y ? x : y
与 w < x ? x + w : ( x < y ? x : y) 等价
与 (w < x ? x + w : x < y) ? x : y 不等价
a > b ? c > d ? e : f : g
与a > b ? (c > d ? e : f) : g等价
说明
1、条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。
2、JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。
3、结合性也是右结合性。
4、与C语言不同的是,JAVA中条件表达式的值必须参与运算。
package exam01;
import java.util.Scanner;
public class JavaExam09 {
public static void main(String[] args) {
char grade;
Scanner scr = new Scanner(System.in);
System.out.println("请输入您的成绩");
int x = scr.nextInt();
if(x>=0&&x<=100){
grade =x>90?'a':x>60?'b':'c';
System.out.println("您的成绩等级为"+grade);
}else {
System.out.println("您输入的成绩错误,请重新输入");
}
}