用java语言定义一个二维数组 从键盘输入一个矩阵的值 对矩阵进行转置,输出转置后的矩阵。 求出原矩阵中的最大值和最小值,输出其所在的行号和列号
时间: 2024-10-19 20:09:11 浏览: 14
在Java中,我们可以定义一个二维数组来存储矩阵,并通过Scanner接收用户的输入。以下是一个完整的示例程序:
```java
import java.util.Scanner;
public class MatrixOperations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入矩阵的行数和列数:");
int rows = scanner.nextInt();
int cols = scanner.nextInt();
// 定义二维数组
int[][] matrix = new int[rows][cols];
System.out.println("请输入矩阵的元素:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = scanner.nextInt();
}
}
// 输出原矩阵
System.out.println("原矩阵:");
printMatrix(matrix);
// 矩阵转置
int[][] transposedMatrix = transpose(matrix);
System.out.println("转置后的矩阵:");
printMatrix(transposedMatrix);
// 找出原矩阵的最大值和最小值及其位置
int maxVal = matrix[0][0], minVal = matrix[0][0];
int maxRow = 0, maxCol = 0;
int minRow = 0, minCol = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (matrix[i][j] > maxVal) {
maxVal = matrix[i][j];
maxRow = i;
maxCol = j;
} else if (matrix[i][j] < minVal) {
minVal = matrix[i][j];
minRow = i;
minCol = j;
}
}
}
System.out.println("原矩阵中的最大值 (" + maxVal + ") 在第 " + (maxRow+1) + " 行第 " + (maxCol+1) + " 列");
System.out.println("原矩阵中的最小值 (" + minVal + ") 在第 " + (minRow+1) + " 行第 " + (minCol+1) + " 列");
scanner.close();
}
// 打印矩阵函数
private static void printMatrix(int[][] matrix) {
for (int[] row : matrix) {
for (int val : row) {
System.out.print(val + " ");
}
System.out.println();
}
}
// 矩阵转置函数
private static int[][] transpose(int[][] matrix) {
int[][] transposed = new int[matrix.length][matrix[0].length];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
transposed[j][i] = matrix[i][j];
}
}
return transposed;
}
}
阅读全文