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

为何Bubblesort()方法中list.length始终返回0?请解析原因

问题根源:变量重名导致静态数组始终是空的

嘿,这个问题其实就是典型的变量作用域冲突踩坑了!你的Bubblesort()方法里拿到的list根本不是你生成的那个装满随机数的数组,而是一开始就初始化的空静态数组,所以list.length当然返回0,排序逻辑完全没执行。

具体来说:

  • 你在类的最外层定义了静态数组static Integer list[] = { };,这个数组从始至终都是空的,长度为0。
  • 到了main方法里,你又写了Integer list[] = intList();——这里的list是局部变量,和类级别的静态list是两个完全独立的变量!
  • 但你的Bubblesort()方法直接访问的是类的静态list(那个空数组),完全没碰你在main里生成的、真正要排序的局部list。所以排序等于白做,最后输出的自然和原数组一模一样。

两种修复方案任你选

方案1:直接复用静态数组(快速修复)

把main里的局部变量声明去掉,直接给静态list赋值,这样Bubblesort()就能拿到正确的数组了:

public static void main(String[] args) {
    Scanner eingabewert = new Scanner(System.in);
    System.out.print("需要排序的数字数量:");
    Count = eingabewert.nextInt();
    // 去掉前面的Integer,直接给静态list赋值
    list = intList();
    org = list.clone();
    Bubblesort();
    System.out.print("原数组:");
    printArray(org);
    System.out.print("\n排序后:");
    printArray(list);
    eingabewert.close();
}

方案2:避免静态变量(更推荐的优雅写法)

静态变量其实很容易引发这类作用域混淆的问题,更好的做法是让Bubblesort方法接收一个数组参数,直接操作传入的目标数组:

// 修改Bubblesort方法,让它接收要排序的数组
public static void Bubblesort(Integer[] arr) {
    int n = arr.length;
    int temp = 0;
    boolean swapped;
    do{
        swapped = false;
        for (int i=0; i < n-1; ++i) {
            if (arr[i] > arr[i+1]) {
                temp = arr[i+1];
                arr[i+1] = arr[i];
                arr[i] = temp;
                swapped = true;
            }
        }
        n = n-1;
    } while (swapped);
}

// 然后在main里调用时,把生成的list传进去就行
public static void main(String[] args) {
    Scanner eingabewert = new Scanner(System.in);
    System.out.print("需要排序的数字数量:");
    Count = eingabewert.nextInt();
    Integer list[] = intList();
    org = list.clone();
    // 传入要排序的数组
    Bubblesort(list);
    System.out.print("原数组:");
    printArray(org);
    System.out.print("\n排序后:");
    printArray(list);
    eingabewert.close();
}

这种写法不仅解决了当前问题,代码的耦合度更低,也更符合Java的面向对象编程习惯,以后维护起来也更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:12:49