如何在Java中用三元运算符(?:)替代多条件if语句?
解决Java三元运算符替代多条件if时的类型转换问题
你的问题出在误用了三元运算符的返回值类型:如果直接把1或0这类int值赋值给boolean变量z,Java会报错“boolean转int的有损转换”——因为boolean和int是不兼容的基本类型,不能直接转换。
正确的三元写法
原if语句的逻辑是当满足任意一个条件时,z为true,否则保持false,三元运算符的两个分支都应该返回boolean类型,所以直接这样写:
z = (x==15 || y==15 || sum==15 || diff==15) ? true : false;
更简洁的写法
其实条件表达式本身的结果就是boolean类型,完全可以省略三元运算符,直接赋值:
z = x==15 || y==15 || sum==15 || diff==15;
修改后的完整代码
import java.util.Scanner; public class Ex13 { public static void main(String[] args) { Scanner e = new Scanner(System.in); int x, y, sum, diff; boolean z = false; System.out.println("Enter x and y"); x = e.nextInt(); y = e.nextInt(); sum = x+y; diff = x-y; // 用简化写法替代原if语句 z = x==15 || y==15 || sum==15 || diff==15; System.out.println(z); } }
内容的提问来源于stack exchange,提问作者Mohammad Naser
相关产品推荐
相关产品推荐

