0
處理我有這樣的2多維數組在紅寶石
[["1"], ["2","3"]]
在開始的時候我有這個算法
maxarray = []
i = 0
m = array.count
while i < m do
x = 0
s = array[i].count
while x < s do
maxarray[i][x] = (Integer(array[i][x]) + [Integer(maxarray[i-1][x-1]), Integer(maxarray[i-1][x])].max)
x+=1
end
i+=1
end
錯誤是這樣的數組:
`<main>': undefined method `[]' for nil:NilClass (NoMethodError)
所以我想也許數組索引出錯了,所以我擴展了我的算法
maxarray = []
i = 0
m = array.count
while i < m do
x = 0
s = array[i].count
while x < s do
if i-1 < 0
item2 = 0
elsif i-1 < 0 && x-1 < 0
item1 = 0
else item1 = maxarray[i-1][x-1]
item2 = maxarray[i-1][x]
end
maxarray[i][x] = (Integer(array[i][x]) + [Integer(item1), Integer(item2)].max)
x+=1
end
i+=1
end
,但現在我有一個不同的錯誤:
`Integer': can't convert nil into Integer (TypeError)
如何防止這種錯誤並運行該腳本?
爲什麼不使用:'maxarray.each do | cur_x | (do_something)end'你在這裏沒有使用Ruby的權力:) – SirLenz0rlot 2011-04-13 16:59:04
也許你可以解釋你正在做什麼,而不是給你當前的解決方案... – 2011-04-13 17:01:51
@Chris McCauley它正好在中間'maxarray =(Integer(array [i] [x])+ [Integer(item1),Integer(item2)]。max)':) – Mikee 2011-04-13 17:06:11