Java入门:冒泡排序成绩数组后如何同步对应课程数组?
解决课程与成绩数组同步排序的问题
你当前的核心问题是:只对成绩数组Grade做了交换排序,但完全没动课程数组Course,导致排序后的成绩和原位置的课程对应不上。要解决这个问题,必须在交换成绩元素的同时,同步交换课程数组中对应位置的元素。
修改后的代码
for (int i = 0; i < Grade.length; i++) { for (int j = i + 1; j < Grade.length; j++) { // 定义对应类型的临时变量,暂存要交换的值 double tmpGrade = 0; String tmpCourse = ""; // 按成绩从高到低比较 if (Grade[i] < Grade[j]) { // 交换成绩数组的元素 tmpGrade = Grade[i]; Grade[i] = Grade[j]; Grade[j] = tmpGrade; // 同步交换课程数组对应位置的元素 tmpCourse = Course[i]; Course[i] = Course[j]; Course[j] = tmpCourse; } } // 此时成绩和课程已经一一对应 System.out.println(Grade[i] + "------------" + Course[i]); }
关键调整点
- 修正临时变量类型:你之前用
int tmp存储double类型的成绩,会导致精度丢失,改成double tmpGrade匹配成绩数组类型。 - 同步交换课程:每次交换成绩的同时,用
tmpCourse暂存课程名称,交换对应位置的课程元素,保证两个数组的索引始终对应同一组课程和成绩。 - 用数组长度代替硬编码:把循环条件里的
20改成Grade.length,这样不管数组实际长度是多少,代码都能正常运行,避免数组越界。
内容的提问来源于stack exchange,提问作者cstjmn
相关产品推荐
相关产品推荐

