Java数组最大元素与首元素交换时首元素置换失败问题求助
问题原因
你的代码仅记录了数组最大值的数值,没有保存最大值所在的下标位置,当前逻辑只是把数组首元素直接覆盖为最大值,没有修改原最大值所在的数组位置,自然无法完成两个元素的交换。
修复后的代码
import java.util.*; public class arrayTest { public static void main (String[] args) { int bb[] = { -9, 55, 10002, -222, 45, -1, 926, 100, -100 }; int i, temp; int bbLen = bb.length; System.out.println ("Before: " + Arrays.toString(bb)); int large = bb[0]; int maxIndex = 0; // 新增变量存储最大值对应的下标 for (i = 0; i < bbLen; i++) { if (large < bb[i]) { large = bb[i]; maxIndex = i; // 匹配到更大值时同步更新下标 } } // 交换首位置元素和最大值所在位置的元素 temp = bb[0]; bb[0] = large; bb[maxIndex] = temp; System.out.println ("After: " + Arrays.toString(bb)); } }
运行结果
Before: [-9, 55, 10002, -222, 45, -1, 926, 100, -100] After: [10002, 55, -9, -222, 45, -1, 926, 100, -100]
内容的提问来源于stack exchange,提问作者Spencer Colón
相关产品推荐
相关产品推荐

