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