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

数组两两配对取最大值问题:Java代码输出异常求助

问题分析与修正方案

你的代码逻辑完全偏离了需求,问题出在这几点:

  1. 两层嵌套循环遍历了所有可能的元素对(比如1和2、1和6、-5和7等),而不是按顺序两两分组(1&-5、2&6、10&7)
  2. 内部的if (a > b || b > a)条件永远成立(除非两个数相等),导致每次循环都会覆盖a和b的值,最后只保留了最后一次循环的元素对(10和7)
  3. 最终只输出两个变量,没有输出每一组的最大值

修正后的代码

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, -5, 2, 6, 10, 7};
        
        // 按顺序两两配对,步长设为2遍历数组
        for (int i = 0; i < arr.length; i += 2) {
            // 处理数组长度为奇数的情况(避免索引越界)
            if (i + 1 >= arr.length) {
                System.out.println(arr[i]);
                break;
            }
            // 直接取当前配对的最大值
            int max = Math.max(arr[i], arr[i + 1]);
            // 控制输出格式,最后一组不输出逗号
            System.out.print(max);
            if (i != arr.length - 2) {
                System.out.print(", ");
            }
        }
    }
}

代码说明

  • 循环步长设为2,确保每次处理arr[i]和arr[i+1]这一组元素
  • 使用Math.max()方法直接获取两个数的最大值,代码更简洁
  • 加入索引越界判断,兼容数组长度为奇数的场景(比如数组有5个元素时,最后一个元素单独输出)
  • 控制输出格式,让结果和你期望的1, 6, 10完全一致

内容的提问来源于stack exchange,提问作者Amin Mousavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:55:12