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]);
           }
          }
    }
}

更新

コードを更新しましたが、正常に動作するはずです。半分を繰り返すのではなく、colすべてを投げるのを繰り返していたので、逆を2回やり直していました。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
于 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 に答える