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

Ruby代码仅打印数组前两个元素 无法输出全部字符串是什么原因

问题原因

核心问题出在index变量的更新逻辑错误,你把数值转成了字符串做拼接操作,而非数值加法:

  • 初始index值为0,0 < 4成立,打印words[0]即Hello,执行index = index.to_s + 1.to_s时,相当于拼接字符串"0"和"1",得到index = "01"
  • 第二次判断循环条件时,"01".to_i为1,1 < 4成立,打印words[1]即Goodbye,再次更新时拼接字符串"01"和"1",得到index = "011"
  • 第三次判断循环条件时,"011".to_i为11,11 < 4不成立,循环直接终止,因此不会输出后两个元素
修复方案

把index的更新逻辑改为数值加法即可,无需来回转换字符串类型,修复后的代码如下:

words = ["Hello", "Goodbye", "Yes", "No"]

index = 0
while index < words.length
  p words[index]
  index += 1
end

如果使用Ruby自带的迭代器写法,可以完全避免索引操作错误,更简洁安全:

words = ["Hello", "Goodbye", "Yes", "No"]
words.each { |word| p word }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:24:03