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
相关产品推荐
相关产品推荐

