2015-03-25 231 views
0

我怎樣重複9次,併產生三個數組是這樣的:迭代和數組

1 a 
2 b 
3 c 
["a","b","c"] 

4 d 
5 e 
6 f 
["d","e","f"] 

7 g 
8 h 
9 i 
["g","h","i"] ? 
------------------------------------- 
1.upto(9) do 
xxx = gets.chomp 
    wn << xxx 
if wn.length ==3 
puts wn.inspect 

end 
end 
------------------------------------ 

我得到以下輸出:

a 
b 
c 
["a", "b", "c"] 
d 
e 
f 
g 
h 
i 

不是我希望:(

+2

你還沒有指定你正在使用的語言(Ruby也許?),但你可能想要使用'如果wn.length%3 == 0'。 – Phylogenesis 2015-03-25 11:36:50

+1

請添加您正在使用的編程語言的標籤,以獲得該語言專家的關注。 – lodo 2015-03-25 11:37:11

回答

1
結果

一個簡單的解決方案:

a1 = [] 
a2 = [] 
a3 = [] 
1.upto(9) do |i| 
    if a1.empty? || a1.size < 3 
    a1 << gets.chomp! 
    elsif a2.size < 3 
    a2 << gets.chomp! 
    else 
    a3 << gets.chomp! 
    end 
end 
puts a1 
puts a2 
puts a3 

創建3個數組,重複9次,創建條件來填充它們。

+0

謝謝。這正是我需要:) – MBJH 2015-03-25 13:23:24

1

你必須迭代嗎?你總是可以打破長你的字符串,像這樣:

"abcdefghi".scan(/.{3}/).map{|i| i.split('')} # => [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]] 

如果你真的必須遍歷:

1.upto(9) do 
xxx = gets.chomp 
wn << xxx 
if wn.length % 3 == 0 
    puts wn.inspect 
    end 
end 
+1

第一個可以變得更簡單:''abcdefghi「.chars.each_slice(3).to_a' – 2015-03-25 12:30:54

0

我覺得嵌套循環是給你一個乾淨的解決方案。

a = [[],[],[]] 
3.times do |i| 
    3.times { |j| a[i][j] = gets.strip } 
    puts a[i].inspect 
end