首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

一个asp上标越界的有关问题

2012-08-10 
求助:一个asp下标越界的问题求助:我用asp写了个组合的算法,调试一直出现“ Ifb(i)1And b(i+1)0 Then ”这

求助:一个asp下标越界的问题
求助:我用asp写了个组合的算法,调试一直出现“ If b(i)=1 And b(i+1)=0 Then ”这段代码出现下标越界,可我想不管怎么算也运算不到最后一个数组,可能是我已经思维定势了,求助大神给我解惑

VBScript code
Function CreateResult(a,b,m)   Dim result  result=""  n=UBound(a)-1  tempTest =""  j=0  For i=0 To n  tempTest = tempTest & "," & b(i)   j=j+1   If b(i)=1 Then     result = result & "+" & a(i)   End If    Next  CreateResult = resultEnd Function Function Combination(a,m) '从数组a中选取m个数进行组合  Dim n,list  Dim b()   n = UBound(a)-1  ReDim b(n) '辅助数组。首先初始化,将数组前m个元素置为1,表示第一个组合为m个数   For i=0 To n      If i<m Then      b(i)=1   Else      b(i)=0   End If   Next  list = list & "|" & CreateResult(a,b,m) tempEnd = "N"   Do While tempEnd ="N"    findFirst = "N"   swap = "N"       For i=0 To n      L=0     'Call JS_AlertBackEnd(i)     If  findFirst="N" And b(i)=1  Then        k=i       findFirst = "Y"      End If         If  b(i)=1  And b(i+1)=0 Then         b(i)=0        b(i+1)=1        swap = "Y"        If k<>1 Then         For L=0 To i-k         b(L)=b(k+1)        Next         For L=i-k To i         b(L)=0        Next        End If        If k=i And i=n-m Then            tempEnd = "Y"       End If     End If     If swap="Y" Then      Exit For      End If    Next     list = list & "|" & CreateResult(a,b,m) Loop  Combination = list End Function 


[解决办法]
这个当然越界了,你循环到最后一个的时候,再+1不越界也怪

VBScript code
 If (i+1)<=n And b(i)=1  And b(i+1)=0  Then '多加一个是否越界的判断
[解决办法]
ReDim b(n) <-- b的下标是0 到n
For i=0 To n <-- 这里 i 是循环到n的, i=n时 i+1必然超过界限
...
If b(i)=1 And b(i+1)=0 Then <----这里 i=n时 就发生了i+1越界

[解决办法]
下标是从0开始的,你加一就多了啊
[解决办法]
你加一下判断就行了,3楼的说的很对
[解决办法]
For i=0 To n
说明i是从0开始的

If b(i)=1 And b(i+1)=0 Then 

这里的b(i+1)=0
这里怎么能=0呢,最小也结果也是1啊

热点排行