简单的代码行错误验证?

时间:2016-05-02 18:51:37

标签: ruby

我无法让验证器正常运行。

我需要允许用户输入字母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”,它可以正常工作,但它对任何其他数字都不起作用。看起来很简单,它应该可以工作。

知道我在这里做错了吗?

3 个答案:

答案 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)