我无法让验证器正常运行。
我需要允许用户输入字母A-F(大写和小写),如果他们输入则输入错误。
这是我的代码:
print "Enter a letter A-E to add to your order "
items=gets.upcase.chomp
if items != ("A" || "B" || "C" || "D" || "E")
puts ("Incorrect Letter")
end
如果输入“A”或“a”,它可以正常工作,但它对任何其他数字都不起作用。看起来很简单,它应该可以工作。
知道我在这里做错了吗?
答案 0 :(得分:2)
if (items != "A" || items != "B" || items != "C" || items != "D" || items != "E")
是带有“||”的工作版本。
unless items.between?("A", "E")
可能更具可读性。
答案 1 :(得分:1)
("A" || "B" || "C" || "D" || "E")
总是返回" A"在Ruby中,因为" A"不是nil
的{{1}}:
false
等等。
您应该使用nil || "B"
#=> "B"
false || "B"
#=> "B"
"A" || false
#=> "A"
"A" || "B"
#=> "A"
"A" || "B" || "C"
#=> "A"
:
include
由于你想要包括小写和大写字母,我建议:
unless ["A","B","C","D","E"].include?(items) puts ("Incorrect Letter") end
答案 2 :(得分:1)
("A" || "B" || "C" || "D" || "E")
是一个总是计算为“A”的表达式,因为“A”是“真实的”。因此,if语句等同于if items != 'A'
要检查输入是否是众多选项之一,请使用数组的include?
函数:http://ruby-doc.org/core-2.2.0/Array.html#method-i-include-3F
if ["A", "B", "C", "D", "E"].include?(items)