我轉置了M行和N列的二維數組,其中M是外部數組的長度,N是嵌套數組的長度(我在解決方案中考慮了不同的長度):而vs每個循環
a = [[1, 2], [3, 4, 5], [6], [7, 8, 9], [10, 11, 12]]
與each
我工作的解決方案是:
(0..(@columns-1)).each do |col|
(0..(@rows-1)).each do |row|
print @ar[row][col]
end
print "\n"
end
,其結果是:
136710
24-811
-5-912
作爲驗證的結果,我用'-'
填充了空白點以使內部陣列具有相同的長度。
我試圖解決以下while
循環的問題:
while @columns > 0
while @rows > 0
p @ar[(@rows - 1)][(@columns - 1)]
@rows = @rows - 1
end
@columns = @columns - 1
end
,結果是:
12
9
"-"
5
"-"
爲什麼each
循環工作而while
循環沒有?
在'while'版本中,您不會在外循環的每次迭代中重置'@ rows'。你以後也可能會使用這些變量,但是他們的值現在已經被破壞了。 –
@TheF'@ rows'和'@ columns'不是數組,看來。 –
@SergioTulentsev true。你的評論是完全正確的。 –