Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby中这个简单的If函数有什么错_Ruby - Fatal编程技术网

ruby中这个简单的If函数有什么错

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

我一直在努力自学如何编写代码,并被Ruby所吸引。 在处理if函数时,我遇到了这样一个问题,即即使用户输入的答案变量是==它在if函数中仍然返回为false。它不会像真的那样回来 如果它是一个整数,我可以让它工作,但由于某种原因,当有一个字符串时,它总是返回false。也尝试转换,但无法理解

谢谢你的帮助

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