我试图反转这个二维数组中的数字,但我碰巧只反转了第一个和最后一个数字。
到目前为止我已经这样做了,但不知道错误在哪里以及如何修复它,以便每个数字都被反转,而不仅仅是第一个和最后一个:
int [][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int x = 0, y = array.length - 1;
int a = 0, b = array[y - 2].length - 1;
int temp;
while(x < y && a < b)
{
temp = array[x][a];
array[x][a] = array[y][b];
array[y][b] = temp;
a++; b--;
if(a == 3 && b == 0)
{
a = 0;
x++; y--;
}
}
for(int i=0; i<array.length; i++)
{
for(int j=0; j<array[i].length; j++)
{
System.out.println(array[i][j]);
}
}
答案 0 :(得分:0)
另一种解决方法:
import java.util.*;
public class main
{
public static void main(String[] args)
{
int [][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int x = 0, y = array.length - 1;
int temp, temp2, temp3;
while(x < y)
{
temp = array[0][x];
array[0][x] = array[0][y];
array[0][y] = temp;
temp2 = array[1][x];
array[1][x] = array[1][y];
array[1][y] = temp2;
temp3 = array[2][x];
array[2][x] = array[2][y];
array[2][y] = temp3;
x++; y--;
}
//here we get the final answer {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}}
for(int i=0; i<array.length; i++)
{
for(int j=0; j<array[i].length; j++)
{
System.out.println(array[array.length - (i + 1)][j]);
}
}
}
}
答案 1 :(得分:0)
好的,这是另一种不需要使用 Collections
的方法。它确实使用 Arrays.deepToString()
来显示结果。
int[][] array = { { 1, 2, 3, 4, 5 }, { 6, 7, 8 }, { 9 },
{ 10, 11, 12 } };
System.out.println("Before: " + Arrays.deepToString(array));
现在是驱动程序代码。
int len = array.length;
for (int i = 0; i < len / 2; i++) {
int[] s = array[i];
array[i] = array[len - i - 1];
array[len - i - 1] = s;
reverse(array[i]);
reverse(array[len - i - 1]);
}
if (len % 2 == 1) {
reverse(array[len/2]);
}
System.out.println("After: " + Arrays.deepToString(array));
输出
Before: [[1, 2, 3, 4, 5], [6, 7, 8], [9], [10, 11, 12]]
After: [[12, 11, 10], [9], [8, 7, 6], [5, 4, 3, 2, 1]]
辅助方法。
public static void reverse(int[] v) {
int len = v.length;
for (int i = 0; i < len / 2; i++) {
int t = v[i];
v[i] = v[len - i - 1];
v[len - i - 1] = t;
}
}
答案 2 :(得分:-1)
你可以使用这样的东西,
public static void main(String[] args) {
int [][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
ArrayList<ArrayList<Integer>> arr =new ArrayList<>();
for(int i=0;i<array.length;i++){
ArrayList<Integer> temp = new ArrayList<>();
for(int j=0;j<array[i].length;j++){
temp.add(array[i][array.length-1-j]);
}
arr.add(temp);
}
Collections.reverse(arr);
System.out.println(arr);
}
输出将是,
[[9, 8, 7], [6, 5, 4], [3, 2, 1]]