2012-10-18 16 views
5

ファイルをロードし、その内容を配列に分割し、そのクラスをコンテンツに適用する必要があります。 puts show()ラインであるライン28、上のクラス(NoMethodError)未定義のメソッド 'each' for Student:クラス

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クラスを使用すると、繰り返すことができ、コレクションではありません。あなたは基本的にあなたはそれが間違ってやっているfor i in Student

でオーバー「学生」クラスではなく配列/コレクションオブジェクトを反復処理しようとしているためである

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

作品のようなものでなければなりません!助けてくれてありがとう! :) – johk

2

:私は何を書くためのものはこれです、と思います。むしろ

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

私は最初、mwahahaでした:) –

+0

+1の^ comment :)あなたは私を笑わせてくれました。 – ch4nd4n

+0

驚異の作品、ありがとう! :) – johk

関連する問題