2015-03-31 111 views
0

我試圖在一行上打印幾個數組。第一行是確定的,但是之後的循環會崩潰。我試過了一遍,但沒有雪茄。下面的代碼:在一行中打印多個陣列

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 

回答

2

你可以使用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需要一個可選塊 - 您可以d在一行中完成:

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

在你的代碼有三個嵌套這就是獲得輸出的原因。你只需要擁有一個循環打印的您的陣列中的每個這樣的第i個元素:

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