这段三元运算符代码为何报错?IDE提示‘variable expected’
解析"variable expected"错误原因及修复方案
先看你贴的代码:
String stuff="TV"; String res=null; stuff.equals("TV") ? res="Walter" : stuff.equals("Movie") ? res="White" : res="No result";
错误原因
Java里的三元运算符?:是表达式,不是语句——它必须返回一个值,且这个值必须被使用(比如赋值给变量、作为方法参数等)。你现在的写法是把赋值操作放在了三元的分支位置,相当于把三元表达式当成独立语句来用,这不符合Java语法规范。
虽然单个赋值语句(比如res="Walter")本身会返回赋值后的值,但Java不允许单独执行三元表达式作为语句,IDE会因为无法识别这个表达式的合法用途而抛出"variable expected"错误。
修复方案
把整个三元表达式的结果直接赋值给res,分支里只放要返回的取值:
String stuff = "TV"; String res; // 直接将三元表达式的结果赋值给res res = stuff.equals("TV") ? "Walter" : stuff.equals("Movie") ? "White" : "No result";
这样每个分支都是字符串字面量,整个三元表达式返回对应字符串值,再赋值给res,完全符合Java语法,错误就会消失。
内容的提问来源于stack exchange,提问作者Müslüm Ercan
相关产品推荐
相关产品推荐

