Проблема в методах print_tracks и print_track .
Эти методы должны выглядеть следующим образом:
def print_tracks tracks
$i = 0
while $i < tracks.length do
print_track(tracks[$i])
$i += 1
end
end
def print_track track
puts('Track title is: ' + track.title.to_s)
puts('Track file location is: ' + track.file_location.to_s)
end
Но если вы хотите улучшить свой код, попробуйте что-то вроде этого:
def print_tracks(tracks)
tracks.each do |track|
puts "Track title is: #{track.title}"
puts "Track file location is: #{track.file_location}"
puts
end
end
В этом случае весь код будет:
class Track
attr_accessor :title, :file_location
end
def read_tracks music_file
count = music_file.gets().to_i
tracks = Array.new
i = 0
while i < count do
track = read_track(music_file)
tracks << track
i += 1
end
tracks
end
def read_track aFile
track = Track.new
track.title = aFile.gets
track.file_location = aFile.gets
track
end
def print_tracks(tracks)
tracks.each do |track|
puts "Track title is: #{track.title}"
puts "Track file location is: #{track.file_location}"
puts
end
end
def main
aFile = File.new("input.txt", "r").
if aFile..
tracks = read_tracks(aFile)
aFile.close
else
puts "Unable to open file to read!"
end
print_tracks(tracks)
end
main
Я тестировал этот код, используя пример файла input.txt:
3
Taco
c/music/1
Burrito
c/music/2
Nacho
c/music/3
У меня есть вывод:
Track title is: Taco
Track file location is: c/music/1
Track title is: Burrito
Track file location is: c/music/2
Track title is: Nacho
Track file location is: c/music/3
Это именно то, что вы ожидали!