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

Java中countCode方法循环条件str.length()-3的含义解析请求

关于countCode方法中循环条件str.length()-3的疑问解答

先看你写的代码:

public int countCode(String str) {
  int code = 0;
  
  for(int i=0; i<str.length()-3; i++){
    if(str.substring(i, i+2).equals("co") && str.charAt(i+3)=='e'){
      code++;
    }
  }
  return code;
}

咱们要找的是「co+任意字符+e」的模式,这个模式一共占4个字符位置:

  • 第i位是'c',第i+1位是'o'(对应substring(i, i+2)取前两位)
  • 第i+3位必须是'e'(中间i+2位可以是任意字符)

字符串的索引从0开始,最后一个字符的索引是str.length()-1。要保证i+3这个索引不越界(不会访问到字符串不存在的位置),就得满足i+3 ≤ str.length()-1,推导后得到:
i ≤ str.length()-1 - 3 → i ≤ str.length()-4

而循环条件用i < str.length()-3,刚好等价于i ≤ str.length()-4(因为i是整数)。这样就能确保每次循环时,i+3都是有效的索引,不会抛出数组越界异常。

举两个例子更直观:

  • 如果字符串长度是4(刚好能容纳一个目标模式),str.length()-3=1,循环条件i<1,i只能取0,此时i+3=3,正好是最后一个字符的索引,完全合法。
  • 如果字符串长度小于4(比如3),str.length()-3=0,循环条件i<0,循环直接不执行——毕竟连4个字符都凑不齐,不可能存在目标模式,逻辑完全合理。

内容的提问来源于stack exchange,提问作者Deviprasath A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:25:17