【发布时间】:2016-07-30 03:07:33
【问题描述】:
我见过用其他语言发布的解决方案,但不是 Ruby,所以我在这里问。
我正在尝试使用 Ruby 创建一个学生评分系统,这应该获取学生的姓名和该特定学生的用户的两个分数。
我决定尝试将这些存储在哈希中,这样它最终会看起来像:
student_marks = {
"Steve" => 45, 65,
"James" => 20, 75,
"Scott" => 30, 90
}
我的代码尝试如下:
continue = "y"
student_grades = Hash.new
while continue == "y"
puts "Please enter student name"
name = gets.chomp
puts "Please enter the first grade for #{name}"
grade_one = gets.chomp.to_i
puts "Please enter the second grade for #{name}"
grade_two = gets.chomp.to_i
student_grades.each do |key, value|
student_grades[key] = name
student_grades[value] = grade_one
student_grades[value][1] = grade_two
end
puts "Do you want to continue? y or n"
continue = gets.chomp
end
puts student_grades
显然,我的逻辑在尝试使用每个/迭代填充哈希时存在问题,因为我不断得到 nil 返回。我想我可以使用数组并从中填充散列,但是有没有办法使用来自用户输入的迭代来填充键和值的散列?
【问题讨论】:
-
你的预期结果一开始就无效。
-
在您的代码中,您以
student_grades作为空哈希开始,然后对其进行迭代,这意味着您没有对它做任何事情。 -
糟糕,谢谢!看来我对哈希的逻辑完全错误。