Ruby数组插入数字功能退出异常、重复值校验失效问题求助
问题根因与修复代码
问题1触发原因
数字输入逻辑和选项读取逻辑放在同一个判断分支内,无论用户输入的option是1还是2,只要进入option == 1的分支,读取option后都会强制执行一次数字输入逻辑,所以选2退出时依然会要求输入数字并插入数组。
问题2触发原因
重复校验逻辑存在两处错误:
- 校验条件写为
number_user == numbers,是拿单个整数和数组整体做相等判断,永远返回false,正确写法应该用数组的include?方法判断元素是否存在 - 条件分支的
elsif后没有跟判断条件,语法逻辑不成立
修复后完整代码
numbers = [] loop do puts 'To enter a number type 1 - To exit type 2' option = gets.chomp.to_i # 先判断选项,再执行对应逻辑 case option when 1 print 'Type: ' number_user = gets.chomp.to_i if numbers.include?(number_user) puts 'This number has already been entered!' else numbers << number_user end when 2 puts "Bye!" puts "Entered numbers - #{numbers}" break else puts "Invalid option" break end end
内容的提问来源于stack exchange,提问作者user14068539
相关产品推荐
相关产品推荐

