切换矩阵

时间:2013-03-14 01:11:52

标签: java matrix switch-statement swap switching

你好,我有这个程序,我想知道你怎么做才能改变第一行和最后一行

例如:

  

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();

    }

}

2 个答案:

答案 0 :(得分: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]);
           }
          }
    }
}

更新

我更新了它应该正常工作的代码。我正在重做两次因为我正在迭代抛出所有col和所有row而不是迭代其中的一半。

输出:

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

答案 1 :(得分: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]

我认为这就是你要找的东西。这假设你已经将整个数组放在内存中了。