我有点难以上课。因此,我应该为不同的酒店提供四个用户输入,并且价格不同。我的一些If语句出了问题。当我测试我的程序时说我放了" A"我得到一个错误说未初始化的常量C(NameError)。我只想查看用户是否放入A,B,C或D,然后继续执行if语句的其余部分。我想知道我的if语句是否有问题。这是我的代码。
choice1 = gets.chomp.capitalize.to_s
if choice1 == C then
puts "For how many nights?"
nightsC == gets.chomp.to_i
if nightsC == 3
priceC == 700
nightsT + nightsC
else
priceC == nightsC * 300
end
end
这里是Pastebin https://pastebin.com/9c5ezuab
答案 0 :(得分:2)
您正在引用未定义的类C
,这就是您获得NameError
的原因。如果您将C
定义为类,则不会收到错误。但是gets
将返回String的实例,例如"C"
,而不是类。你的语法错了。
# assignment
choice1 = "C"
# equality
choice1 == C # => NameError
# define class
class C
end
# equality
choice1 == C # => false (no error this time)
choice1 == "C" # => true
顺便说一下,技术上C
不是类的语法,而是常量。例如,您可以执行以下任一操作来定义C
常量。
C = "hello"
C = Class.new
class C; end