result = <expression> ? <statement1> : <statement3>;其中,expression 是一个布尔表达式。当 expression 为真时,执行 statement1, 否则就执行 statement3。此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。
int x,y,z; x = 6,y = 2; z = x>y ? x-y : x+y;在这里要计算 z 的值,首先要判断 x>y 表达的值,如果为 true,z 的值为 x-y;否则 z 的值为 x+y。很明显 x>y 表达式结果为 true,所以 z 的值为 4。
x>y ? x-=y : x+=y;在编译时会出现语法错误,因为条件运算符优先于赋值运算符,上面的语句实际等价于:
(x>y ? x-=y : x)+=y;而运算符“+=”是赋值运算符,该运算符要求左操作数应该是一个变量,因此出现错误。为了避免这类错误,可以使用括号“0”来加以区分。例如,下面是正确的表达式。
(x>y) ? (x-=y): (x+=y);
public class Test9 { public static void main(String[] args) { int x, y, z; // 声明三个变量 System.out.print("请输入一个数:"); Scanner input = new Scanner(System.in); x = input.nextInt(); // 由用户输入x的值 // 判断x的值是否大于5,如果是y=x,否则y=-x y = x > 5 ? x : -x; // 判断y的值是否大于x,如果是z=y,否则z=5 z = y > x ? y : 5; System.out.printf("x=%d \n", x); System.out.printf("y=%d \n", y); System.out.printf("z=%d \n", z); } }保存程序并运行,运行效果如图 1 和图 2 所示:
图 1 键盘输入58
图 2 键盘输入4
本文链接:http://task.lmcjl.com/news/10083.html