Java中将if-else重构为单行条件语句时编译报错的解决方案
解决Java单行条件判断的编译错误
嘿,别懊恼啦,这个问题其实挺常见的,真不是什么低级错误!
为啥你的三元运算符写法会报错?
你用的? :是三元表达式,它的核心规则是:这玩意儿必须返回一个值,而且?前后的两个分支得返回相同(或兼容)类型的结果。但System.out.println()这个方法的返回类型是void——也就是压根没返回值,把两个void操作塞到三元分支里,编译器可不就懵了嘛!
给你两种正确的单行写法
写法一:保持单行if-else(你的原代码其实是合法的)
你最开始写的单行if-else本身就没问题,稍微调整下空格可读性更好:
if(x == 1) { System.out.println("aaa"); } else { System.out.println("bbb"); }
写法二:用三元表达式配合println(更简洁)
如果想追求更紧凑的风格,其实可以把要输出的字符串作为三元表达式的返回值,再传给println,这样就符合三元表达式的规则了:
System.out.println(x == 1 ? "aaa" : "bbb");
这个写法里,三元表达式返回的是字符串类型,两边分支都是字符串,完全符合要求,还能一行搞定输出,是不是更舒服?
小提醒
以后用三元表达式的时候,记得先想清楚:我是不是需要它返回一个值?如果只是要执行两个不同的void方法,那老老实实用if-else就好啦~
内容的提问来源于stack exchange,提问作者Thinker
相关产品推荐
相关产品推荐

