你可能会得到ArrayIndexOutOfBoundException
s。
对于您的第一次迭代 ( i=0
),i-1
将等于 -1,您的 Array 超出范围。
始终检查您的阵列边界,并计划在超出范围时该怎么做
if((i-1) < 0 || (i+1) > arraysize) //for example here you should stop your iteration
//or do something else
另一个可能的问题可能是以下行:
arrayshift[i][j] = originalarray[i][j-1] + array[[i-1][j]+[i-1][j-1]]/2;
, 你在一个地方声明,originalarray...
但另一方面你array
用于第二个操作数,你可能也想originalarray
使用
您的数组索引也是错误的。
您的公式说明了以下内容:
I[I[i-1,j] + I[i-1,j-1]]/2
所以你可能想要这样的东西:
originalarray[originalarray[i-1,j]+originalarray[i-1,j-1]]/2
但是您应该将这些值保存在变量中
int val1 = originalarray[i-1,j];
int val2 = originalarray[i-1,j-1];
arrayshift[i][j] = originalarray[i][j-1] + originalarray[val1+val2]/2;
对于此公式的第二部分,您的第二个索引缺失。所以你需要更新公式以包含某种第二个索引(也许 val1 和 val2 是索引?)
arrayshift[i][j] = originalarray[i][j-1] + originalarray[val1][val2]/2;