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

