Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 简单的代码行验证错误?_Ruby - Fatal编程技术网

Ruby 简单的代码行验证错误?

Ruby 简单的代码行验证错误?,ruby,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”,它可以正常工作,但对于任何其他数字它

我无法使我的验证器正常工作

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

知道我做错了什么吗?

A | | B | | C | | D | | E总是在Ruby中返回A,因为A不是零的false:

等等

您应该使用包括:

由于您希望同时包含小写和大写字母,我建议:

unless ("a".."e").include?(items.downcase) puts ("Incorrect Letter")
A | | B | | C | | D | | E在Ruby中总是返回A,因为A不是零的false:

等等

您应该使用包括:

由于您希望同时包含小写和大写字母,我建议:

unless ("a".."e").include?(items.downcase) puts ("Incorrect Letter")
A | | B | | C | | D | | E是一个始终计算为A的表达式,因为A是真实的。因此,if语句相当于if items!='A'

要检查输入是否是多个选项之一,请使用数组的include?功能:

如果[A,B,C,D,E].include?items

A | | B | | C | | D | E是一个始终计算为A的表达式,因为A是真实的。因此,if语句相当于if items!='A'

要检查输入是否是多个选项之一,请使用数组的include?功能:

如果[A、B、C、D、E],则包括?项

是带有| |的工作版本

unless items.between?("A", "E")
也许更具可读性

是带有| |的工作版本

unless items.between?("A", "E")

可能更具可读性。

始终可以使用范围,a..E.include?始终可以使用范围,a..E.include?
unless items.between?("A", "E")