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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:48