Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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,我正在完成一个codeacademy项目,我无法获得特定的条件来显示。这是我的密码 当我选择add并选择要添加的电影时,我希望它让我知道我输入的电影是否已经存在于散列中。当我输入一部已经存在于散列中的电影时,它会询问我的评级。我相信我把else语句放在了正确的位置,但它似乎不起作用 更新:我更改了这两行代码(删除了.to_sym) 它不允许我输入重复项 现在,当我选择“添加”然后尝试添加“Memento”时,我会收到错误消息 “#{title}已存在。其评级为#{rating}!”#{ratin

我正在完成一个codeacademy项目,我无法获得特定的条件来显示。这是我的密码

当我选择
add
并选择要添加的电影时,我希望它让我知道我输入的电影是否已经存在于散列中。当我输入一部已经存在于散列中的电影时,它会询问我的评级。我相信我把
else
语句放在了正确的位置,但它似乎不起作用

更新:我更改了这两行代码(删除了.to_sym)

它不允许我输入重复项

现在,当我选择“添加”然后尝试添加“Memento”时,我会收到错误消息 “#{title}已存在。其评级为#{rating}!”#{rating}生成一个1的整数(由于整数值为4,因此没有意义)


end

因为
title
是一个字符串,所以不需要将其转换为符号。然后,您可以使用
Hash::include?
查看密钥是否存在

# ADD
when "add" 
  puts "What would you like to add?"
  title = gets.chomp
  # title = title.to_sym                # delete this line since the hash keys are strings
  if !movies.include? title             # use Hash::include? to see if key exists
    puts "What its rating? (enter 1-4)"
    rating = gets.chomp
    ...
  else
    puts "Movie already exists. Its rating is #{movies[title]}!"   # remove .to_sym
end

删除to_sym呼叫时,您没有删除所有呼叫:

movies[title.to_sym] = rating.to_i

不引用电影分级,而是引用可变分级。还没定下来

else块应该是

rating = movies[title]
puts "#{title} already exists. Its rating is #{rating}!"

你的问题是什么?您有什么问题?它允许您添加两次相同的电影,还是只允许您添加一个预定义的电影?如果只是预定义的电影,那么您需要阅读Ruby中符号和字符串之间的差异.nil?将始终满足要求,除非您向电影添加符号键。。由于情况已发生变化,让我更新问题。因此,如果电影不存在,您希望对其进行评级和添加。对吗?谢谢你这就是解决办法!
movies[title.to_sym] = rating.to_i
Its rating is #{rating}!"
rating = movies[title]
puts "#{title} already exists. Its rating is #{rating}!"