あなたはおそらくArrayIndexOutOfBoundException
sを得るでしょう。
最初の反復 ( i=0
) ではi-1
、配列が範囲外である -1 に等しくなります。
常に配列の境界を確認し、範囲外の場合の対処方法を計画してください
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
で、おそらく同様に使用したい2番目のオペランドに使用し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;
この数式の 2 番目の部分では、2 番目のインデックスがありません。したがって、数式を更新して、ある種の 2 番目のインデックスを含める必要があります (おそらく、val1 と val2 がインデックスですか?)
arrayshift[i][j] = originalarray[i][j-1] + originalarray[val1][val2]/2;