求二维数组每一列(行)上的最大值
求二维数组每一列上的最大值
- 问题描述
输入二维数组的行数n、列数m,并输入二维数组,用数组输出每行的最大值
-
输入
该数组共有几行几列:3 3 3 2 1 5 4 6 7 8 9
-
输出
第1行最大值:3 第2行最大值:6 第3行最大值:9
-
简单思路
-
代码
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("该数组共有几行几列:"); int n=sc.nextInt(); //行 int m=sc.nextInt(); //列 int [][]a=new int[n][m]; //二维数组定义 int b[]=new int[n]; //存储每行最大值 注意:b[]的范围应该是行数 for (int i = 0; i < n; i++) { b[i]=0; //初始化一个最小值,与a[i][j]进行比较,取得最大值 for (int j = 0; j < m; j++) { a[i][j]=sc.nextInt(); if(b[i]<a[i][j]) { //利用if循环,求最大值 b[i]=a[i][j]; } } } for (int i = 0; i < n; i++) { System.out.println("第"+(i+1)+"行最大值:"+b[i]); } } }
-
运行结果
求二维数组每一行上的最大值
- 问题描述
输入二维数组的行数n、列数m,并输入二维数组,用数组输出每列的最大值
-
输入
该数组共有几行几列:3 3 1 2 3 4 5 6 7 8 9
-
输出
第1列最大值:7 第2列最大值:8 第3列最大值:9
-
简单思路
与行相比来说,列需要进行矩阵转置
-
代码
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("该数组共有几行"); int n=sc.nextInt(); //行 int m=sc.nextInt(); //列 int [][]a=new int[n][m]; //输入二维数组 int [][]c=new int[m][n]; //转置二维数组 int b[]=new int[m]; //求最大值 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { a[i][j]=sc.nextInt(); c[j][i]=a[i][j]; //行列转置 } } for (int i = 0; i < m; i++) { //与求行最大值相同 b[i]=0; for (int j = 0; j < n; j++) { if(b[i]<c[i][j]) { b[i]=c[i][j]; } } } for (int i = 0; i < m; i++) { System.out.println("第"+(i+1)+"列最大值:"+b[i]); } } }
-
运行结果