0

我需要编写一个程序,从用户那里获取一个数字 n 并创建一个计数的 nxn 矩阵,然后我需要转置它。我尝试了多种编码方法,但没有正确显示。

import java.util.Scanner;

public class SquareMatrix {
  public static void main(String[] args)
{
    //Variables
    int size;
    int value;

    //Scanner
    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);

    //Prompt
    System.out.println("Enter the size of the Square Matrix: ");
    size = input.nextInt();


    for(int i=1; i<=size; i++) {
        System.out.println();

        for(int j=0; j<size; j++) {

            value = i+j;
            System.out.print(value);

        }
     }

  }

}

我目前得到的结果是:

Enter the size of the Square Matrix: 
3

123
234
345

我需要它看起来更像这样:

Enter the Size of the Square Matrix:
3
Square Matrix:
1 2 3 
4 5 6 
7 8 9 
Transpose:
1 4 7 
2 5 8 
3 6 9 
4

2 回答 2

1

向上计数的 nxn 矩阵是

    for(int i=0; i<size; i++) {
        System.out.println();

        for(int j=1; j<=size; j++) {

            value = j + i*size;
            System.out.print(value);

        }
     }

转接是

  for(int i=1; i<=size; i++) {
        System.out.println();

        for(int j=0; j<size; j++) {

            value = j*size + i;
            System.out.print(value);

        }
     }
于 2015-03-04T20:13:42.653 回答
0

我写了一个完全符合你需要的代码。它可能看起来过于复杂,但我认为它掌握了你用铅笔和纸做的想法。您需要将扫描用户输入部分放入其中。

int n=10;
int[][] matrix =new int[n][n]; // a 2D array as one would imagine a matrix
int num=0;
int temp=0;// used in transposing


//initializing the arrays of the second dimension
for (int init=0;init<n;init++){ 
    matrix[init]=new int[n];
}

System.out.println("filling and printing matrix");
for (int fill_row=0;fill_row<n;fill_row++){
    for(int columns=0;columns<n;columns++){
        matrix[fill_row][columns]=++num;
        if(columns==n-1){
        System.out.println(Arrays.toString(matrix[fill_row]));
        }
    }
}


System.out.println("Transposed matrix");
for (int transp_row=0;transp_row<n;transp_row++){
        for(int columns=transp_row;columns<n;columns++){
            //store actual value to temp, 
            temp=matrix[transp_row][columns];
            //by switching the order of the indicies assign new value to current position
            matrix[transp_row][columns]=matrix[columns][transp_row];
            //assgin temp value to what we used as replacement
            matrix[columns][transp_row]=temp;
            if(columns==n-1){
            System.out.println(Arrays.toString(matrix[transp_row])); // print each rows of the array
            }
        }
    }
}

我希望它有所帮助。

于 2015-03-04T21:15:20.213 回答