You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何获取二维数组每行的最大值?已有全局最值实现遇问题

获取二维数组每行的最大值

我原本实现了获取二维数组全局最大值和最小值的功能,现在想修改代码来获取数组每行的最大值,但操作后得到了不符合预期的输出结果。

原代码

public class Main
{
  public static void main ( String[] args )  
  {
    int[][] data = { {3, 2, 5},
                     {1, 4, 4, 8, 13},
                     {9, 1, 0, 2},
                     {0, 2, 6, 3, -1, -8} };

    
    int max = data[0][0];
    int min = data[0][0];
  
    
    for ( int row=0; row < data.length; row++)
    {
      for ( int col=0; col < data[row].length; col++) 
      {
         if (data[row][col] > max){
           max = data[row][col];
           
         }
         if (data[row][col] < min){
           min = data[row][col];
         }
      }
    }  

    System.out.println( "max = " + max + "; min = " + min );
  }
}

错误输出

2
5
4
4
8
1
3
1
1
2
2
6
6
6
6

解决方案

要实现每行最大值的计算,核心是为每一行单独初始化最大值,而非使用全局变量累积所有行的极值。具体修改如下:

  1. 将最大值变量的初始化移到外层循环内部,每次处理新行时,把最大值设为当前行的第一个元素
  2. 移除不需要的最小值变量及相关判断逻辑
  3. 每行遍历完成后,立即输出当前行的最大值

修改后的完整代码:

public class Main
{
  public static void main ( String[] args )  
  {
    int[][] data = { {3, 2, 5},
                     {1, 4, 4, 8, 13},
                     {9, 1, 0, 2},
                     {0, 2, 6, 3, -1, -8} };

    for ( int row=0; row < data.length; row++)
    {
      // 初始化当前行的最大值为该行第一个元素
      int rowMax = data[row][0];
      for ( int col=0; col < data[row].length; col++) 
      {
         if (data[row][col] > rowMax){
           rowMax = data[row][col];
         }
      }
      // 输出当前行的最大值
      System.out.println("第" + (row+1) + "行最大值:" + rowMax);
    }  
  }
}

问题说明

原代码的max是全局变量,会持续累积所有行的最大值,无法单独记录每行的极值,这是导致输出混乱的根本原因。修改后,每次进入新行时都会重置最大值变量,遍历完成后得到的就是当前行的最大值,输出结果也会符合预期。

内容的提问来源于stack exchange,提问作者Nathan Sarabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:25:24