【发布时间】:2015-10-30 12:49:19
【问题描述】:
我需要取一个 int[][] 数组并将位 0-6 向左移动一位,同时保存位 7 并将位 0 设置为先前保存的位 7 的值;对于数组中的每个位置 [row][col]。我有一些我觉得快要完成的代码,但我遗漏了一些东西,我不知道是什么:
int[][] temp = someArray;
for(int row = 0; row < someArray.length; ++row)
for(int col = 0; col < someArray [row].length; ++col)
{
int num = someArray[row][j];
int numAtSeven = num & (1 << 7);
num = num << 1; //shift
numAtSeven = numAtSeven >> 7; //move to end
num = num | numAtSeven; //put back in
System.out.println(row + " = " + col);
System.out.println(num);
temp[row][j] = num;
}
System.out.println("out");
someArray = temp;
仍然是 ArrayOutOfIndex,产生以下输出:
0 = 0
279
0 = 1
324
0 = 1
.
.
.
326 = 1
359
326 = 2
301
326 = 3
.
.
.
329
327 = 499
357
out
java.lang.ArrayIndexOutOfBoundsException: 285
此外,我需要采用相同的数组并将每个 [row][col] 的低 2 位与高 2 位交换,我也很迷失这部分。我知道我将再次需要一个嵌套的 for 循环,并且它与上述过程非常相似,如果不是镜像的话,但这真的让我很难过。
我确实先搜索了这个,找到了a similar question,但我也不是很理解那个代码,它仍然没有回答我的第一个问题。
编辑:运行代码会引发 java.lang.ArrayIndexOutOfBoundsException
edit2:更新代码以反映更改
【问题讨论】:
-
你需要说明你得到了什么错误!
-
如何计算高度和宽度?如果第二个维度始终没有相同的大小,那么您可能会得到 IndexOutOfBoundException。
-
哎呀...我的意思是我已经添加了它
-
@KevinEsche 它们在我的代码中已在上面定义,但它是一个方形数组。数组中的每个元素对应于图片中的一个位置 [row][col],比如 256x512 或其他东西。
标签: java arrays multidimensional-array indexoutofboundsexception bit-shift