ruby中这个简单的If函数有什么错
我一直在努力自学如何编写代码,并被Ruby所吸引。 在处理if函数时,我遇到了这样一个问题,即即使用户输入的答案变量是==它在if函数中仍然返回为false。它不会像真的那样回来 如果它是一个整数,我可以让它工作,但由于某种原因,当有一个字符串时,它总是返回false。也尝试转换,但无法理解 谢谢你的帮助ruby中这个简单的If函数有什么错,ruby,Ruby,我一直在努力自学如何编写代码,并被Ruby所吸引。 在处理if函数时,我遇到了这样一个问题,即即使用户输入的答案变量是==它在if函数中仍然返回为false。它不会像真的那样回来 如果它是一个整数,我可以让它工作,但由于某种原因,当有一个字符串时,它总是返回false。也尝试转换,但无法理解 谢谢你的帮助 puts("For each question select A, B, or C") puts("What is the capital of Kentucky?") puts() puts
puts("For each question select A, B, or C")
puts("What is the capital of Kentucky?")
puts()
puts("A. Louisville")
puts("B. Frankfort")
puts("C. Bardstown")
puts()
answer = String("B")
text = gets()
puts()
if text == answer
puts("correct")
else
puts("incorrect")
puts("The correct answer was " + answer + ".")
end
在声明将解决此问题的“text”变量时,可以调用另外一个方法 当您按enter键提交答案时,所使用的方法会在末尾保留一个换行符,因此它永远不会真正与答案对应。要删除换行符,请使用“chomp”方法
希望这有帮助。祝你好运。吹毛求疵,但是
获取
不会添加换行符(不像放置
)。它只保留用户通过按回车键输入的换行符。执行text=gets.chop可使代码正确运行。我不知道它为什么会起作用,并将对此进行研究,但感谢您花时间回答我的问题。我也没有解释,但基本上当您键入答案并按enter键时,“gets”方法也会存储您按enter键时的换行符。额外的“chomp”方法从字符串中删除换行符,使其对应于也没有换行符的答案。祝你好运,欢迎光临StackOverflow@TravisSidebottom您可能通过按“回车”或“回车”键来结束输入。但这也会产生一个字符:字符“\n”
,因此文本
变成“B\n”
,这显然与“B”
不同。只需删除尾随的换行符,即“B\n”.chomp
返回“B”
@Stefan,这有助于澄清和解释.chomp命令的工作原理。不知道按“回车”键创建了一个新字符。我想知道,为什么在处理整数时不必使用.chomp。“1\n”是否与1不同?您不需要使用String
来创建字符串。只要做answer=“B”
。另外,Ruby风格不允许在方法不带参数时使用()
。只需使用方法的名称;例如,put
而不是put()
。。
text = gets.chomp