You need to enable JavaScript to run this app. Java三元运算符替代if-else时出现分号预期报错问题
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 04:06:04