数组两两配对取最大值问题:Java代码输出异常求助
问题分析与修正方案
你的代码逻辑完全偏离了需求,问题出在这几点:
- 两层嵌套循环遍历了所有可能的元素对(比如1和2、1和6、-5和7等),而不是按顺序两两分组(1&-5、2&6、10&7)
- 内部的
if (a > b || b > a)条件永远成立(除非两个数相等),导致每次循环都会覆盖a和b的值,最后只保留了最后一次循环的元素对(10和7) - 最终只输出两个变量,没有输出每一组的最大值
修正后的代码
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
相关产品推荐
相关产品推荐

