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 (NoMethodError) 的未定义方法“每个”

在第 28 行,即该puts 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 对象for i in Student

基本上你做错了。它应该是类似的东西

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