Java冒泡排序数组输出错误求助(编程新手)
帮你排查Java排序方法的问题
Hey there! 作为Java新手能推进到项目排序这步已经相当不错啦😉 既然你说只有最后一个sort方法存在问题,咱们可以一步步来定位解决。
首先,麻烦你补充几个关键信息,这样我能更精准地帮你:
- 你的
sort方法的完整代码(包括你用的是一维数组、二维数组还是自定义类数组来存储数据) - 你期望的排序规则:是按选手编号升/降序排列,还是按捕获鱼类的重量大小排序?
- 你遇到的具体问题:是排序结果完全不符合预期?还是运行时抛出了异常(比如数组越界、类型转换错误)?如果有报错信息也可以贴出来
先给你几个常见场景的排序示例参考
假设你用二维数组存储选手编号和重量(比如double[][] data,每个元素格式为[选手编号, 重量]),这里给你两个常用排序逻辑的实现:
示例1:按捕获重量降序排序(冒泡排序实现)
public static void sortByWeightDesc(double[][] fishData) { int length = fishData.length; // 冒泡排序核心逻辑 for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - i - 1; j++) { // 比较当前元素和下一个元素的重量,把更大的往前移 if (fishData[j][1] < fishData[j+1][1]) { // 交换两个数组元素 double[] temp = fishData[j]; fishData[j] = fishData[j+1]; fishData[j+1] = temp; } } } }
示例2:按选手编号升序排序(用Arrays工具类+比较器)
import java.util.Arrays; public static void sortByIdAsc(double[][] fishData) { // 利用Arrays.sort的自定义比较器,按编号(数组第一个元素)升序排列 Arrays.sort(fishData, (a, b) -> Double.compare(a[0], b[0])); }
如果是用自定义类存储数据(比如一个Fisherman类包含id和weight属性),可以这样实现排序:
import java.util.Arrays; class Fisherman { int id; double weight; public Fisherman(int id, double weight) { this.id = id; this.weight = weight; } } public static void sortFishermenByWeight(Fisherman[] fishermen) { // 按重量升序排序,降序的话把a和b调换位置即可 Arrays.sort(fishermen, (a, b) -> Double.compare(a.weight, b.weight)); }
把你的sort代码和问题细节补充后,咱们就能快速找到问题所在啦!
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

