5

ファイルをロードし、そのコンテンツを配列に分割し、クラスをコンテンツに適用したいと考えています。

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

私は得ています

Student:Class のメソッド 'each' が未定義です (NoMethodError)

行である28puts show()行目。これをさらに進める方法についての手がかりはありますか?

4

2 に答える 2

3

そこにタイプミスがあると思います(とりわけ)。あなたはこれをやっています:

for i in Student
  puts show()
end

明らかに、Studentクラスは反復可能なコレクションではありません。あなたが書きたかったのはこれだと思います:

allStudents.each do |student|
  puts student.show
end
于 2012-10-18T08:09:07.467 に答える
2

これは、Array / Collectionオブジェクトではなく、「Student」クラスを反復処理しようとしているためです。for i in Student

基本的にあなたはそれを間違っています。むしろ次のようなものでなければなりません

allStudents.each do |student|
  puts student.show
end
于 2012-10-18T08:09:47.757 に答える