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

Ruby代码意外输出"goodbye"且循环无法终止的原因及修复

问题原因与修复方案

原因

Ruby的gets方法会读取用户输入的全部内容,包括输入结束时按下的回车(换行符\n,Windows系统下是\r\n)。比如你输入"goodbye"并回车后,变量text实际存储的是"goodbye\n",和你判断的"goodbye"完全不相等,导致if条件永远无法触发,循环不会终止。

你提到输入"Hello"也会输出"goodbye",大概率是代码执行时的误解,或者实际运行的代码与你提供的不一致,但核心问题还是gets读取的内容包含换行符导致匹配失败。

修复方法

以下是几种可靠的修复方式:

方法1:用chomp移除末尾换行符

这是最常用的方式,chomp会精准移除字符串末尾的换行符,不影响其他内容:

while true
  text = gets.chomp
  if text == "goodbye"
    puts "goodbye"
    break
  end
end

方法2:用strip移除首尾所有空白字符

如果允许用户输入前后带空格、制表符等空白字符,可以用strip:

while true
  text = gets.strip
  if text == "goodbye"
    puts "goodbye"
    break
  end
end

方法3:判断时忽略换行符(不推荐)

这种方式可以匹配包含"goodbye"的输入,但不够严谨(比如输入"goodbye123"也会触发):

while true
  text = gets
  if text&.include?("goodbye")
    puts "goodbye"
    break
  end
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:10:33