New Item是数组继续替换旧的

时间:2014-06-28 03:08:57

标签: ruby arrays hash

我正在尝试使用数组和哈希来制作带有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

1 个答案:

答案 0 :(得分:0)

你误诊了你的问题。并不是每次添加都会替换最后一个...您将@students重置为循环每次迭代顶部的空数组。

所以,是的,@students将始终只有最近添加的学生,因为你的循环创建一个空数组,向其添加学生,打印它,然后将其抛出并创建一个新的空数组。

此...

loop do
@students = []

应该是......

@students = []
loop do

...以便在循环之外创建一次@students数组。