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

Ruby循环迭代解惑:为何while循环中需添加i += 1?

关于Ruby while循环中i += 1的作用解析

先贴出你的代码:

def count_a(word)
  count = 0
  i = 0
  while i < word.length
    char = word[i]
    
    if char == "a" || char == "A"
        count += 1
    end 
    
    i += 1  
  end

  return count 
end

puts count_a("application")  # => 2
puts count_a("bike")         # => 0
puts count_a("Arthur")       # => 1
puts count_a("Aardvark")     # => 3

为什么必须加i += 1?

你的while循环靠i < word.length这个条件控制是否继续执行——只要条件为真,循环体代码就会重复运行。这里的i是用来逐个定位字符串字符的索引:从0开始,依次取word[0]、word[1]……直到最后一个字符。

要是没加i += 1,i的值会一直停在初始的0,只要输入字符串长度大于0,i < word.length就永远为真,循环会无限执行下去——程序直接卡死在循环里,根本到不了返回结果的步骤,这就是你说的“代码无法运行”的原因。

两种情况的执行流程对比

  • 有i += 1时:

    1. 初始i=0,进入循环,取第一个字符判断计数,之后i变为1
    2. 检查1 < word.length,成立就继续循环,取第二个字符,以此类推
    3. 当i等于字符串长度时,条件不成立,循环结束,返回最终计数
  • 没加i += 1时:

    1. i一直是0,每次循环都只取第一个字符,判断完i还是0
    2. 循环条件永远满足,程序陷入死循环,永远执行不到return count和后面的输出语句

说白了,i += 1就是让这个“遍历计数器”不断往前走,直到触发放行循环的条件,完成整个字符串的遍历工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:20:26