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

Java数组求最大值代码输出异常,请排查问题并给出修改方案

代码问题分析与修改方案

存在的问题

  • 数组越界异常:
    • main方法中创建的数组长度为5(索引范围0~4),但循环条件写为i <= 5,会尝试访问array[5],直接触发ArrayIndexOutOfBoundsException。
    • Largest方法中的循环同样使用i <= 5,传入的数组长度仅为5,超出索引范围。
  • 最大值更新逻辑错误:
    在Largest方法的判断逻辑中,当array[i] > largest时,错误地执行array[i] = largest;,这是将数组元素覆盖为当前最大值,正确逻辑应该是把largest更新为array[i]。
  • 冗余方法调用与不必要打印:
    • main方法中重复调用Largest(array),第一次调用无意义且会输出中间过程;
    • Largest方法内每次循环都打印largest,会输出不必要的中间值,干扰最终结果展示。

修改后的代码

package com.company;
import java.util.*;

public class Main {
    public static int Largest(int array[]) {
        int largest = Integer.MIN_VALUE;
        // 循环条件改为i < array.length,适配任意长度数组
        for (int i = 0; i < array.length; i++) {
            if (array[i] > largest) {
                // 修正赋值逻辑,更新largest为当前数组元素
                largest = array[i];
            }
        }
        return largest;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int array[] = new int[5];
        // 循环条件改为i < array.length,避免越界
        for (int i = 0; i < array.length; i++) {
            array[i] = sc.nextInt();
            System.out.println("输入的元素:" + array[i]);
        }
        // 只调用一次方法并保存结果
        int max = Largest(array);
        System.out.println("largest element is : " + max);
    }
}

关键修改说明

  1. 将所有循环条件从i <=5改为i < array.length,这样代码能适配任意长度的数组,同时彻底避免数组越界问题。
  2. 修正Largest方法中的赋值逻辑:把array[i] = largest;改为largest = array[i];,实现最大值的正确更新。
  3. 移除Largest方法内的循环打印语句,只保留最终结果的输出;在main方法中只调用一次Largest方法并保存结果,避免冗余调用。

内容的提问来源于stack exchange,提问作者Kriti Bhardwaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:04:43