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

Ruby代码故障求助:判断首数是否等于后两数之和的程序问题

问题分析与解决

嘿,我来帮你排查这段Ruby代码的问题!你的需求很清晰,但代码里有几个关键细节没处理好,导致程序无法正常工作:

故障原因

  • 输入处理错误:gets获取的是包含换行符的整行字符串,直接赋值给num1, num2, num3时,Ruby会把字符串拆成单个字符分配给变量。比如你输入5 2 3,实际num1是"5",num2是空格" ",num3是"2",完全不是你想要的三个独立数字。
  • 类型不匹配:就算你输入的字符是数字,它们的类型是字符串,num2+num3会执行字符串拼接而非数字加法。比如"2"+"3"得到"23",和"5"比较肯定是false,逻辑完全错误。
  • 无效语法:最后一行的</>是无意义的符号,Ruby无法识别,这会直接导致程序报错。

修复后的代码

# 获取输入,去除换行符后按空格分割,再转成整数
num1, num2, num3 = gets.chomp.split.map(&:to_i)

# 输出提示问题
puts "Your first number = Your second number + Your third number. True or False?"

# 执行判断并输出结果
puts num1 == num2 + num3

# 计算后两数之和,输出与第一个数的关系
sum = num2 + num3
comparison = case sum
             when num1 then "equal to"
             when (num1+1..) then "greater than"
             else "less than"
             end
print "The sum is #{comparison} Your first number"

关键修改说明

  1. 输入处理优化:gets.chomp.split先去掉输入末尾的换行符,再按空格把输入字符串拆分成三个元素的数组;.map(&:to_i)把数组里的每个字符串转成整数,确保后续是数字运算。
  2. 逻辑修正:现在num2+num3是真正的数字加法,和num1的比较逻辑完全符合你的需求。
  3. 语法修复:用case语句替换了无效的</>,清晰输出和与第一个数字的大小/相等关系,让结果更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:31:08