0

你好我有这个程序,我想知道你认为我能做些什么来改变第一行和最后一行

例如:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

变成:

4 2 3 1

8 6 7 5

12 10 11 9

16 14 15 13

这就是我到目前为止所拥有的

import java.io.*;
import java.util.Scanner;
public class DynamicMatrix {

    public static void main(String args[]){

        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the number of rows and colomns:");
        int row=sc.nextInt();
        int col=sc.nextInt();
        int arr[][]=new int[row][col];
        System.out.println("Enter the numbers for the matrix:");
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                arr[i][j]=sc.nextInt();

    }

}
4

2 回答 2

1
// display your matrix:

 for(int i=0;i<row;i++){
   System.out.println("");
   for(int j=0;j<col;j++){
       System.out.print(arr[i][j]);
   }
  }

// reversing your matrix

int temp = 0 ;
 for(int i=0;i<row/2;i++){
   for(int j=0;j<col/2;j++){
       temp = arr[i][j];
       arr[i][j] = arr[i][col-j-1]; 
       arr[i][col-j-1] = temp ;
   }
  }

// display the reversed one

     for(int i=0;i<row;i++){
       System.out.println("");
       for(int j=0;j<col;j++){
           System.out.print(arr[i][j]);
       }
      }

更新

整个事情应该是这样的:

import java.io.*;
import java.util.Scanner;
public class DynamicMatrix {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
  System.out.println("Enter the number of rows and colomns:");
   int row=sc.nextInt();
   int col=sc.nextInt();
   int arr[][]=new int[row][col];
     System.out.println("Enter the numbers for the matrix:");
     for(int i=0;i<row;i++)
     for(int j=0;j<col;j++)
     arr[i][j]=sc.nextInt();
// display your matrix:

     for(int i=0;i<row;i++){
       System.out.println("");
       for(int j=0;j<col;j++){
           System.out.print(arr[i][j]);
       }
      }

    // reversing your matrix

    int temp = 0 ;
     for(int i=0;i<row/2;i++){
       for(int j=0;j<col/2;j++){
           temp = arr[i][j];
           arr[i][j] = arr[i][col-j-1]; 
           arr[i][col-j-1] = temp ;
       }
      }

    // display the reversed one

         for(int i=0;i<row;i++){
           System.out.println("");
           for(int j=0;j<col;j++){
               System.out.print(arr[i][j]);
           }
          }
    }
}

更新

我更新了它现在应该可以正常工作的代码。我重做了两次逆运算,因为我在迭代 throw allcol和 allrow而不是迭代其中的一半。

输出:

Enter the number of rows and colomns:
2
2
Enter the numbers for the matrix:
1
2
3
4

12
341 will be replacing 2
2

21
34
于 2013-03-14T01:19:00.230 回答
0

试试下面的代码...

public static void main(String[] args){
    Integer array[][] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
    printArray(array);
    System.out.println();
    printArray(reverseRows(array));
}

public static Integer[][] reverseRows(Integer[][] array){
    Integer[][] arrayToReturn = new Integer[array.length][array[0].length];
    for(int i = 0 ; i < array[1].length; i ++){
        arrayToReturn[i] = Arrays.copyOf(array[i], array[i].length);
        Integer newFirst = arrayToReturn[i][arrayToReturn[i].length - 1];
        Integer newLast = arrayToReturn[i][0];
        arrayToReturn[i][0] = newFirst;
        arrayToReturn[i][arrayToReturn[i].length - 1] = newLast;
    }
    return arrayToReturn;
}

public static void printArray(Integer[][] array){
    for(int i = 0 ; i < array.length ; i ++){
        System.out.println(Arrays.toString(array[i]));
    }
}

它会输出

[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]
[11, 12, 13, 14, 15]
[16, 17, 18, 19, 20]
[21, 22, 23, 24, 25]

[5, 2, 3, 4, 1]
[10, 7, 8, 9, 6]
[15, 12, 13, 14, 11]
[20, 17, 18, 19, 16]
[25, 22, 23, 24, 21]

我认为这是您正在寻找的。这假设您已经在内存中拥有整个数组。

于 2013-03-14T01:56:03.810 回答