2012-10-18 57 views
5

我想加載一個文件,將它的內容分割成數組,然後讓這個類適用於內容。線路28上,這是puts show()線類(NoMethodError)未定義的方法'each'給Student:Class

class Student 
    def initialize(name, grade) 
     @name = name 
     @grade = grade 
     @grade = @grade.to_i 
     @newgrade = @grade*1.45 
    end 

    def show() 
     return "#{@name} ,#{@grade} , #{@newgrade}" 
    end 
end 

# Opening the file into an array 
arr = File.open("exam_results.txt", "r+") 
allStudents = Array.new 

for a in arr 
    b = a.split(",") 
    name = b[0] 
    score = b[1] 
    allStudents << Student.new(@name, @grade) 
end 

for i in Student 
    puts show() 
end 

我得到

未定義的方法 '各自' 的學生。任何關於如何進一步研究的線索?

回答

3

我認爲你有一個錯字(除其他外)。你這樣做:

for i in Student 
    puts show() 
end 

顯然,Student類不是,你可以遍歷集合。我想,你的意思寫的是:

allStudents.each do |student| 
    puts student.show 
end 
+0

工作!感謝您的幫助! :) – johk

2

那是因爲你正試圖遍歷「學生」類,而不是數組/集合對象在for i in Student

基本上你是做錯了。它應該是像

allStudents.each do |student| 
    puts student.show 
end 
+1

我是第一個,mwahaha :) –

+0

+1對^評論:)你讓我笑了。 – ch4nd4n

+0

工程奇蹟,非常感謝! :) – johk