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

Ruby猜数字程序if语句前终止及循环猜数实现问题咨询

问题根因

你提供的代码在执行时提前终止,是因为if分支内的字符串拼接逻辑触发了类型错误:s是整数类型,Ruby不支持直接用+运算符拼接整数和字符串,程序执行到对应print语句时会抛出异常直接退出,没有后续输出。

修复方案

1. 修复单轮运行逻辑

将print语句的拼接逻辑替换为Ruby支持的字符串插值写法,即可正常执行分支判断:

z = 31
puts "猜猜变量z对应的数字是多少\n请输入一个数字"
get_s = Integer(gets.chomp)
s = get_s
puts "你选择了#{s},谢谢"
if s < z
  print "#{s}比z小"
elsif s > z 
  print "#{s}比z大"
else
  print "#{s}和z相等,恭喜你猜对了!"
end

你也可以用s.to_s + "字符串内容"的写法实现拼接,效果一致。

2. 添加循环直到猜对为止

用loop语句包裹输入、判断的逻辑,当用户猜对数字时用break跳出循环即可:

z = 31
loop do
  puts "猜猜变量z对应的数字是多少\n请输入一个数字"
  s = Integer(gets.chomp)
  puts "你选择了#{s},谢谢"
  if s < z
    puts "#{s}比z小,再试一次"
  elsif s > z 
    puts "#{s}比z大,再试一次"
  else
    puts "#{s}和z相等,恭喜你猜对了!"
    break
  end
end

如果需要兼容用户输入非整数的场景,可以给Integer(gets.chomp)加异常捕获逻辑,避免输入非数字时程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:02