根据用户输入循环创建内容

时间:2018-12-12 12:48:40

标签: ruby algorithm function irb

我正在创建一种算法,可以根据杯子的半径对杯子进行排序。输入为

2  
red 10       
green 7

输出为

green
red

我的方法是看到第一个输入是2,我必须创建2个具有颜色和半径属性的Cup。如此处所示:

class Cup
    attr_accessor :colour, :radius

    def initialize(colour, radius)
        @colour = ""
        @radius = 0
    end

    def number_of_cups
        puts "How many cups are there?".chomp
        gets.times do 
            Cup.new("", 0)
        end
    end
end

当我尝试访问Cup.number_of_cups时,我收到一个undefined method错误。我的问题是,例如,如果我输入3,那么我将有3个新的杯子对象吗?

1 个答案:

答案 0 :(得分:2)

您需要使用红宝石清除基本材料

class Cup
    attr_accessor :colour, :radius

    def initialize(colour='No Colour', radius=0)
        @colour = colour
        @radius = radius
    end
end

puts "How many cups are there?"
cups = []
gets.to_i.times do |n| 
  puts "Enter Cup-#{n+1} colour & radius:"
  c = gets.chomp
  r = gets.to_i
  cups << Cup.new(c, r)
end

sorted_cups = cups.sort_by { |x| x.radius }

您还可以显示sorted_cups