我自学了一些java,我一直在创建一个2d数组,用随机值初始化它,然后创建数组的转置。
输出示例如下:
$ java Test1 22 333 44 555 6
Enter the number of rows (1-10): 0
ERROR: number not in specified range (1-10) !
and so on until you enter the correct number of rows and columns.
原始矩阵
1 22
333 44
555 6
转置矩阵
1 333 555`
22 44 6`
^应该是最终输出。一些帮助与代码将不胜感激!
如果行数或列数超出指定范围,我想编写代码生成错误消息。以及if从命令行读取矩阵元素,而不是随机生成它们。
import java.util.Scanner;
public class Test1 {
/**Main method */
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of rows (1-10): ");
int rows = input.nextInt();
System.out.print("Enter the number of columns (1-10): ");
int cols = input.nextInt();
// Create originalMatrix as rectangular two dimensional array
int[][] originalMatrix = new int[rows][cols];
// Assign random values to originalMatrix
for (int row = 0; row < originalMatrix.length; row++)
for (int col = 0; col < originalMatrix[row].length; col++) {
originalMatrix[row][col] = (int) (Math.random() * 1000);
}
// Print original matrix
System.out.println("\nOriginal matrix:");
printMatrix(originalMatrix);
// Transpose matrix
int[][] resultMatrix = transposeMatrix(originalMatrix);
// Print transposed matrix
System.out.println("\nTransposed matrix:");
printMatrix(resultMatrix);
}
/**The method for printing the contents of a matrix */
public static void printMatrix(int[][] matrix) {
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}
}
/**The method for transposing a matrix */
public static int[][] transposeMatrix(int[][] matrix) {
// Code goes here...
}
}
5条答案
按热度按时间bq8i3lrv1#
这是kotlin的解决方案!
dphi5xsq2#
这是一个简单的方法,返回转置矩阵的int[][]。。。
要打印二维矩阵,您可以使用以下方法:
cigdeys33#
以上提供的答案在记忆方面并不有效。它使用的是另一个数组-transposedmatrix,而不是作为参数提供的数组。这将导致消耗双倍内存。我们可以按如下方式进行:
ddhy6vgd4#
你可以使用下面的类,它有你想要的大多数方法。
输出:
ukxgm1gy5#
对于一个方阵,您只需遍历2d数组的对角部分,并用相应的索引交换值,而不是遍历整个数组。