这是我的代码:
Dim index As Integer
do
index = find difference(board1,board2)
if index = - 1 then
exit do
end if
loop
find difference是一个返回整数的函数,如果没有找到差异,我将其设置为返回-1,那么循环退出,但是这给了我一个异常的异常。我在第index = find difference(board1,board2)
行附近放了一个try语句,并将消息作为例外捕获-1:
指数超出范围。
必须是非负数且小于集合的大小。
参数名称:index。
我不知道是什么导致这种情况,任何帮助都会非常感激。
修改
find_difference:
dim indy as integer
dim indexes as list(of integer)
dim info as integer = 0
indexes.add(-1)
for each cell in cells
if cell.info > info then
indexes.clear
indexes.add(cell.index)
else if cell.info = info then
indexes.add(cell.index)
end if
next
indy = Math.Floor((indexes.Count + 1) * Rnd())
return indexes(indy)
end function
答案 0 :(得分:1)
find_difference
函数中只有一个使用索引的语句:
return indexes(indy)
表示indy
的值计算为-1或高于集合的大小:
indy = Math.Floor((indexes.Count + 1) * Rnd())
如果indices.Count为1且Rnd()大于0.5,那么indy将被计算为1,这将超出集合的范围。应删除+ 1
。