You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

整数数组计数失效求助:字符串匹配后自增逻辑排查

问题分析与修复方案

嘿,我一眼就看出问题出在哪了!咱们来拆解你这段代码的逻辑:

你写的三元表达式:

personName[0] = n[y].getName().equals("Penny") ? personName[0]++ : personName[0];

这里的坑点在于后置自增运算符++的执行顺序:

  • 当条件为true时,personName[0]++会先返回当前的旧值,再把变量加1
  • 但紧接着你又把这个旧值重新赋值给了personName[0],等于把刚加的1给覆盖回去了,结果自然没变化!

几种修复方案:

方案1:改用前置自增运算符

前置自增++personName[0]会先把变量加1,再返回新值,这样赋值后就能得到正确的结果:

personName[0] = n[y].getName().equals("Penny") ? ++personName[0] : personName[0];

方案2:用if语句(更推荐)

其实完全没必要用三元表达式绕弯子,直接用if判断逻辑更清晰,也不容易踩运算符的坑:

if (n[y].getName().equals("Penny")) {
    personName[0]++;
}

方案3:简洁的三元赋值写法

如果坚持想用三元表达式,可以换一种更直观的写法,直接给变量加1或0:

personName[0] += n[y].getName().equals("Penny") ? 1 : 0;

额外小提示

为了避免空指针异常,建议把字符串比较的顺序反过来(如果getName()可能返回null的话):

if ("Penny".equals(n[y].getName())) {
    personName[0]++;
}

这样即使n[y].getName()返回null,也不会抛出NullPointerException。

内容的提问来源于stack exchange,提问作者Hasnain Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:30:59