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

Ruby条件判断问题:加法题校验方法始终判定错误求助

解决你的Ruby加法答题方法问题

嘿,我一眼就发现问题所在啦!你的代码里有个典型的类型不匹配坑:

你用gets.chomp获取到的用户输入是字符串类型(String),而firstNumber + secondNumber计算出来的equation是整数类型(Integer)。在Ruby里,字符串和整数直接用==比较永远不会相等,所以不管用户输入的答案对不对,都会走错误分支。

修正后的代码

def questionPrompt
  firstNumber = rand(20)
  secondNumber = rand(20)
  equation = firstNumber + secondNumber
  puts "What is #{firstNumber} + #{secondNumber} ?"
  # 关键:把用户输入的字符串转成整数
  useranswer = gets.chomp.to_i
  if equation == useranswer
    puts "good job!"
  else
    puts "wrong answer, the correct one is #{equation}"
  end
end

关键修正点

  • 用to_i方法把用户输入的字符串转换成整数,这样就能和equation(整数)正确比较了
  • 顺便给错误提示加了正确答案,用户体验更好哦😉

如果担心用户输入非数字(比如字母)导致to_i返回0的情况,还可以加个输入验证:

def questionPrompt
  firstNumber = rand(20)
  secondNumber = rand(20)
  equation = firstNumber + secondNumber
  puts "What is #{firstNumber} + #{secondNumber} ?"
  
  loop do
    user_input = gets.chomp
    # 验证输入是否是有效数字
    if user_input.match?(/^\d+$/)
      useranswer = user_input.to_i
      break if equation == useranswer
      puts "wrong answer, try again!"
    else
      puts "Please enter a valid number!"
    end
  end
  puts "good job!"
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:46:25