Java三元运算符替代if-else时出现分号预期报错问题
错误成因
本次报错的核心原因是括号数量不匹配,属于基础语法书写错误:
你写的这行输出代码为:
System.out.println("Sexe : " + ((tabSexe[i]) ? "Homme": "Femme")));
逐层级核对括号配对关系:
System.out.println(是最外层方法调用的左括号,对应需要1个右括号闭合- 你为了优先计算三元表达式、避免运算优先级问题,额外套了一层左括号
(用来包裹整个三元表达式逻辑,对应三元表达式结束后已有1个右括号完成闭合 - 整行代码在三元表达式结束后多写了1个无对应左括号的右括号,导致编译器在解析完完整语句后,碰到多余符号无法识别语句结束位置,最终抛出
error: ';' expected的提示。
修正方案
删除多余的那个右括号即可,修正后的单行代码为:
System.out.println("Sexe : " + ((tabSexe[i]) ? "Homme": "Femme"));
修正后完整可运行方法
public static void affichage(String[] tabPersonnage, int[] tabAge, boolean[] tabSexe){ for(int i=0; i<tabPersonnage.length; i++){ System.out.println("Personnage n° " + (i+1)); System.out.println("Pseudo : " + tabPersonnage[i]); System.out.println("Age : " + tabAge[i] + " "); System.out.println("Sexe : " + ((tabSexe[i]) ? "Homme": "Femme")); System.out.println("-------------------"); } }
补充说明:Java中的三元运算符是表达式,执行后会返回固定类型的结果,完全可以作为字符串拼接的参数、或者方法调用的入参使用,你将if-else分支改写为三元写法的思路本身是没有问题的。
内容的提问来源于stack exchange,提问作者user15499855
相关产品推荐
相关产品推荐

