Ruby代码运行异常求助:添加until条件后无法正常工作
问题分析与修复方案
嘿,我来帮你搞定这个Ruby代码的问题!你的代码主要有两个关键问题,导致添加input == "quit"判断后无法正常运行:
1. 循环条件的逻辑错误
你初始化了result = " "(带空格的字符串),而在Ruby中,任何非空字符串都是「真值(truthy)」。所以你的循环条件until result || input == "quit",一开始就会因为result是真值而判定为true,循环直接终止,根本不会执行里面的代码!
这就是为什么移除input == "quit"后代码能运行——不过其实那也不是正确的逻辑,只是巧合让循环能跑起来而已。
2. 变量拼写错误
在else分支里你写了puts "I heard #{results}",这里的results多了一个s,应该是result,不然会触发未定义变量的错误。
修正后的代码
我调整了逻辑,让程序能正确循环接收输入,直到输入"quit"时退出:
# 初始化输入变量 input = gets.chomp # 先打印第一次输入的内容 puts "you just told me #{input}" # 如果第一次输入就是quit,直接退出 if input == "quit" puts "Alright Goodbye" else # 循环接收后续输入,直到输入quit loop do result = gets.chomp if result == "quit" puts "Alright Goodbye" break # 退出循环 else puts "I heard #{result}" end end end
或者如果你更想用until的写法,可以这样调整,确保循环条件符合预期:
input = gets.chomp puts "you just told me #{input}" # 先检查第一次输入是否为quit if input == "quit" puts "Alright Goodbye" else result = "" # 循环直到result是quit until result == "quit" result = gets.chomp if result == "quit" puts "Alright Goodbye" else puts "I heard #{result}" end end end
这样不管是第一次输入quit,还是后续输入quit,程序都能正确响应啦!
内容的提问来源于stack exchange,提问作者tristan lim
相关产品推荐
相关产品推荐

