Java 当我将2D数组向左移动两次以上时,它将替换其中一个数字
请注意,第三行将1更改为2。您有两个问题 首先,这是:Java 当我将2D数组向左移动两次以上时,它将替换其中一个数字,java,arrays,2d,shift,Java,Arrays,2d,Shift,请注意,第三行将1更改为2。您有两个问题 首先,这是: Enter number of rows: 4 Enter number of columns: 4 ArrayA 12 12 10 14 18 5 2 0 16 1 2 2 17 15 6 15 Which row [0..3] do you want to shift to the left? 2 How many times? 3 Final array: 12 12
Enter number of rows:
4
Enter number of columns:
4
ArrayA
12 12 10 14
18 5 2 0
16 1 2 2
17 15 6 15
Which row [0..3] do you want to shift to the left?
2
How many times?
3
Final array:
12 12 10 14
18 5 2 0
2 16 2 2
17 15 6 15
for(int k=0;kTry调用shiftLeft(数组,1,rowSel)num次-有效吗?如果有效,那么您的逻辑在num
>1处出现问题。它最终将其移动到正确的编辑:oops。我看错了。是的,当更改为1 savedRow应该表示什么时,它有效吗?我更新了答案以澄清;savedRow与原始的int temp
,但暂时保持不变这是整行。如果我的答案有帮助,请务必对其进行投票,如果有帮助,请将其选为“最佳”!
Enter number of rows:
4
Enter number of columns:
4
ArrayA
12 12 10 14
18 5 2 0
16 1 2 2
17 15 6 15
Which row [0..3] do you want to shift to the left?
2
How many times?
3
Final array:
12 12 10 14
18 5 2 0
2 16 2 2
17 15 6 15
for (int k=0; k<m-num; k++){
array[rowSel][k] = array[rowSel][k+num];
}
int[] savedRow = new int[m];
for (int k=0; k<m; k++){
savedRow[k] = array[rowSel][k];
}
for (int k=0; k<m; k++){
array[rowSel][k] = savedRow[(k+num)%m];
}