【问题标题】:Printing multiple arrays in one line在一行中打印多个数组
【发布时间】:2015-06-05 11:42:40
【问题描述】:

我正在尝试在一行上打印多个数组。第一行没问题,但之后循环中断了。我试过几次,但没有雪茄。代码如下:

chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3']
chapter_title = ['Numbers', 'Letters', 'Variables']
chapter_page = ['page 1', 'page 72', 'page 118']

#Prints chapter number
chapter_num.each do |num|
    print (num.ljust 0)

    #Prints title
    chapter_title.each do |title|
            print (title.center 14)

            #Prints page number
            chapter_page.each do |page|
                    puts (page.rjust 40)
            end
    end
end

当我运行上面的代码时,它看起来像这样:

Chapter 1   Numbers                                      page 1
                             page 72
                            page 118
   Letters                                      page 1
                             page 72
                            page 118
  Variables                                     page 1
                             page 72
                            page 118
Chapter 2   Numbers                                      page 1
                             page 72
                            page 118
   Letters                                      page 1
                             page 72
                            page 118
  Variables                                     page 1
                             page 72
                            page 118
Chapter 3   Numbers                                      page 1
                             page 72
                            page 118
  Letters                                      page 1
                             page 72
                            page 118
Variables                                     page 1
                             page 72
                            page 118

应该是这样的:

Chapter 1   Numbers                                      page 1
Chapter 2   Letters                                     page 72
Chapter 3  Variables                                   page 118

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:

    您可以在这里使用Array::zip 方法:

    chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3']
    chapter_title = ['Numbers', 'Letters', 'Variables']
    chapter_page = ['page 1', 'page 72', 'page 118']
    
    arr = chapter_num.zip(chapter_title, chapter_page)
    arr.each { |el| puts "#{el[0].ljust 0} #{el[1].center 14} #{el[2].rjust 40}" }
    
    #=> Chapter 1    Numbers                                       page 1
    #=> Chapter 2    Letters                                      page 72
    #=> Chapter 3   Variables                                    page 118
    

    而且——因为Array::zip 有一个可选块——你可以在一行中完成:

    chapter_num.zip(chapter_title, chapter_page).each { |el| puts "#{el[0].ljust 0} #{el[1].center 14} #{el[2].rjust 40}" }
    

    【讨论】:

      【解决方案2】:

      在您的代码中,您有三个嵌套循环,这就是您获得输出的原因。您只需要一个循环来打印 each 数组的 i-th 元素,如下所示:

      chapter_num = ['Chapter 1', 'Chapter 2', 'Chapter 3']
      chapter_title = ['Numbers', 'Letters', 'Variables']
      chapter_page = ['page 1', 'page 72', 'page 118']
      
      #Prints chapter number
      (0..chapter_num.length-1).each do |i|
        puts "#{chapter_num[i].ljust 0} #{chapter_title[i].center 14} #{chapter_page[i].rjust 40}"
      end
      

      打印出来的:

      Chapter 1    Numbers                                       page 1
      Chapter 2    Letters                                      page 72
      Chapter 3   Variables                                    page 118
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 2021-11-20
        • 2016-02-16
        • 1970-01-01
        • 2010-11-25
        相关资源
        最近更新 更多