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

如何用循环同步排序两个ArrayList?学生成绩排序问题

同步排序学生姓名与成绩列表的循环实现

你当前的问题出在按成绩排序时,仅对grade列表的元素做了交换,却未同步调整student列表中对应位置的姓名。要解决这个问题,只需在交换成绩的同时交换对应位置的姓名即可。

修改choice == 3的代码块如下:

if (choice ==3){
    int tempGrade = 0;
    String tempName = "";
    System.out.println("Ordering by Grade...");
    for (int i = 0; i < grade.size(); i++) {
        for (int j = i+1; j < grade.size(); j++) {
            if(grade.get(i) < grade.get(j)) {
                // 交换成绩
                tempGrade = grade.get(i);
                grade.set(i, grade.get(j));
                grade.set(j, tempGrade);
                // 同步交换对应位置的姓名
                tempName = student.get(i);
                student.set(i, student.get(j));
                student.set(j, tempName);
            }
        }
    }
    // 输出排序后的结果
    for (int i = 0; i < grade.size(); i++) {
        System.out.println(grade.get(i) + " " + student.get(i));
    }
}

关键修改点:

  • 新增tempName变量用于暂存交换时的姓名
  • 在交换成绩的代码块内,添加对student列表对应元素的交换操作,确保姓名和成绩的位置始终一一对应

修改后,当成绩按从高到低的顺序交换位置时,对应的学生姓名会同步移动,排序后成绩与姓名就能正确匹配。

内容的提问来源于stack exchange,提问作者J Cordeiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:01:02