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

Java数组排序失效求助:调整循环变量后仍输出原顺序

问题分析与解决

你的排序代码失效的核心原因是if语句末尾多了一个分号,这直接破坏了整个排序逻辑:

if (nameArray[i] > nameArray[j]); // 这里的分号是致命错误

这个分号会让if变成一个空语句——不管括号里的条件是否成立,后面的大括号代码块都会无条件执行。也就是说,每次循环都会强制交换nameArray[i]和nameArray[j]的元素,这种无差别交换会把数组搅乱,最终看起来和原数组顺序没区别(甚至更混乱)。

修正后的代码

去掉if语句末尾的分号,同时根据你注释里提到的“降序”需求,调整判断条件(如果要升序,就把<改回>):

public static void main(String[] args) {
   
    double[] nameArray = {20.0,30.2,25.2,75.23,20.0,2.0,25.22};
    double tempElement;
    
    for (int i=0; i < nameArray.length; i++)    
    {
        for (int j=i+1; j < nameArray.length; j++)
        {
            // 去掉分号,判断条件改为i位置元素小于j位置时交换,实现降序
            if (nameArray[i] < nameArray[j]) {
                tempElement = nameArray[i];
                nameArray[i] = nameArray[j];
                nameArray[j] = tempElement;    
            }
   
        }
    }
    
    for (int i = 0; i<nameArray.length; i++)
    {
        System.out.println(nameArray[i]);
    }
}

额外说明

  • 如果你需要升序排序,只需要把判断条件改回nameArray[i] > nameArray[j]即可,核心还是要去掉那个多余的分号。
  • 你的注释提到“将排序后的元素按降序分配到另一个数组”,但当前代码并没有用到第二个数组,如果有需要,可以新增一个数组来存储排序结果,不过这不是当前问题的核心。

内容的提问来源于stack exchange,提问作者Newbie Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:20:27