我目前正在学习Ruby,除了一个小小的字符串比较问题外,我很享受所有的一切。
answer = gets()
if (answer == "M")
print("Please enter how many numbers you'd like to multiply: ")
elsif (answer. == "A")
print("Please enter how many numbers you'd like to sum: ")
else
print("Invalid answer.")
print("\n")
return 0
end
我正在做的是我正在使用gets()来测试用户是想要增加他们的输入还是添加它(我已经测试了两个函数;它们都可以工作),我稍后会得到一些更多的输入函数和浮动翻译(也可以)。
当我输入A并且我得到“无效答案”时会发生什么.M同样发生。
这里发生了什么? (我也使用了.eql?(sp),也返回了bubcus)
答案 0 :(得分:6)
gets
返回输入的整个字符串,包括换行符,因此当他们输入“M”并按回车键时,您返回的字符串为"M\n"
。要删除尾随换行符,请使用String#chomp
,即将第一行替换为answer = gets.chomp
。
答案 1 :(得分:1)
问题是Ruby在值中包含回车符。
将您的第一行更改为:
answer = gets().strip
您的脚本将按预期运行。
此外,您应使用puts
代替两个print
语句,因为puts
会自动添加换行符。
答案 2 :(得分:0)
你的回答是附加回车。因此输入“A”永远不会等于“A”,而是“A(返回)”
如果您将拒绝行更改为打印(“答案无效。[#{answer}]”),您可以看到此信息。您也可以将比较更改为if(answer.chomp == ..)
答案 3 :(得分:0)
我从未使用过get put我认为如果你点击输入你的变量答案可能会包含'\n'
尝试调用.chomp
来删除它。
答案 4 :(得分:0)
检查答案时添加换行符...
answer == "M\n"
answer == "A\n"
首先选择你的字符串:answer = gets.chomp