用Java写一个2、定义一个二维数组,从键盘输入一个矩阵的值,对矩阵进行转置,输出转置后的矩阵。并求出原矩阵中的最大值和最小值,输出其所在的行号和列号。
时间: 2024-05-12 11:18:16 浏览: 107
java 输入一个数字组成的数组(输出该数组的最大值和最小值)
好的,让我来回答您的问题。
以下是Java代码,实现矩阵的转置和查找最大/小值的行列号:
```java
import java.util.Scanner;
public class MatrixTranspose {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入矩阵的行数:");
int row = sc.nextInt();
System.out.print("请输入矩阵的列数:");
int col = sc.nextInt();
int[][] matrix = new int[row][col];
System.out.println("请输入矩阵的值:");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
matrix[i][j] = sc.nextInt();
}
}
System.out.println("原矩阵:");
printMatrix(matrix);
int[][] transposedMatrix = transpose(matrix);
System.out.println("转置后的矩阵:");
printMatrix(transposedMatrix);
int max = matrix[0][0], min = matrix[0][0];
int maxRow = 0, maxCol = 0, minRow = 0, minCol = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
maxRow = i;
maxCol = j;
}
if (matrix[i][j] < min) {
min = matrix[i][j];
minRow = i;
minCol = j;
}
}
}
System.out.println("原矩阵中的最大值为" + max + ",在第" + (maxRow+1) + "行第" + (maxCol+1) + "列");
System.out.println("原矩阵中的最小值为" + min + ",在第" + (minRow+1) + "行第" + (minCol+1) + "列");
}
public static int[][] transpose(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
int[][] transposedMatrix = new int[col][row];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
transposedMatrix[j][i] = matrix[i][j];
}
}
return transposedMatrix;
}
public static void printMatrix(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
```
注意:上面的代码有一些限制条件,例如输入的矩阵必须是整数类型的,且行列数必须大于0。
希望本次回答能够解决您的问题,如果还有其他问题,欢迎随时提出。
阅读全文