我正在尝试使用数组和哈希来制作带有gpa的学生列表。我还使用gets.chomp来生成此数组用户输入,以便教师可以添加到此程序。我遇到的问题是,每次我添加一个新学生时,它都会取代旧学生。我究竟做错了什么?
loop do
@students = []
puts "What is the student's name?"
@name = gets.chomp
puts "What is the students GPA?"
@gpa = gets.chomp.to_f
def add_students
@students << {:name => @name, :gpa => @gpa}
end
add_students
puts @students
end
答案 0 :(得分:0)
你误诊了你的问题。并不是每次添加都会替换最后一个...您将@students
重置为循环每次迭代顶部的空数组。
所以,是的,@students
将始终只有最近添加的学生,因为你的循环创建一个空数组,向其添加学生,打印它,然后将其抛出并创建一个新的空数组。
此...
loop do
@students = []
应该是......
@students = []
loop do
...以便在循环之外创建一次@students
数组。