在Java中反转一行

时间:2014-02-20 01:15:05

标签: java arrays

我必须从数组中反转一行。

用户输入行和列,然后输入数字以填充数组(我将在下面给出一个示例)

然后我需要接收输入的数据并将其反转并再次填充数组。

示例:

  

3 3(用户输入行和列)

     

1 2 3(用户输入用适当数量的元素填充数组)

     

3 2 1

     

2 1 3

     

需要:

     

2 1 3

     

3 2 1

     

1 2 3

我现在的代码只是很多漫无目的的猜测(以及谷歌和这里的一些类似问题)而且现在我只能让它换成

  

1 2 3

     

3 2 1

     

1 2 3

我必须实现的代码:

   public static void reverseRows(int[][] inTwoDArray)
{

   for (int row = inTwoDArray.length-1; row >= 0; row--)
   {
      for (int col = inTwoDArray[0].length-1; col >= 0; col--)
      {
         inTwoDArray[row][col] = inTwoDArray[inTwoDArray.length-1-row][col];
      }
   }

   printArray(inTwoDArray);
}

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:3)

您需要将您正在交换的值存储在临时变量中, 也不需要逐个元素地交换行。

public static void reverseRows(int[][] inTwoDArray){
    int lastIndex = inTwoDArray.length-1;
    for (int row = 0; row < inTwoDArray.length/2; row++){
        int[] temp = inTwoDArray[row];
        inTwoDArray[row] = inTwoDArray[lastIndex - row];
        inTwoDArray[lastIndex - row] = temp;
    }
    printArray(inTwoDArray);
}

答案 1 :(得分:1)

public class ReverseArray {
    public static void main(String[] args) {
        int[][] arr = {{1,2,3},{3,2,1},{2,1,3}};
        reverseRows(arr);
    }

    public static void reverseRows(int[][] inTwoDArray) {
        List<int[]> tmp = Arrays.asList(inTwoDArray);
        Collections.reverse(tmp);
        inTwoDArray = tmp.toArray(inTwoDArray);

        for(int[] outer:inTwoDArray){
            for(int inner:outer){
                System.out.print(inner + " ");
            }
            System.out.println();
        }
    }
}

答案 2 :(得分:1)

public static int[][] fliprows(int array[][]) {

    int temp[][] = new int[array.length][array[0].length];
    int j;
    for (int i = 0; i < array.length; ++i) {
        j = array.length - 1 - i;       
        temp[i] = array[j];
    }
    return temp;
}

public static int[][] flipcolumns(int array[][]) {
    int temp[][] = new int[array.length][array[0].length];

    for (int i = 0; i < array.length; ++i) {
        for (int j = 0; j < array[i].length; ++j) {
            temp[i][j] = array[i][array[i].length - j - 1];
        }
    }
    return temp;
}

public static void main(String[] args) {
    int array[][] = {{1, 2, 3}, {3, 2, 1}, {2, 1, 3}};
    array = fliprows(array);

    for (int i = 0; i < array.length; ++i) {
        for (int j = 0; j < array[i].length; ++j)
            System.out.print(array[i][j]);

        System.out.println();
    }
}