java - .length 函数始终返回 0

标签 java arrays bubble-sort

出于某种原因,我的“Bubblesort()”方法中的 .length 函数始终返回零。有人能解释一下为什么返回0值吗?

import java.util.Random;
import java.util.Scanner;

public class BubbleSortS {
    static int Count;
    static Integer org[];
    static Integer list[] = {  };

    public static void main(String[] args) {

        Scanner eingabewert = new Scanner(System.in);
        System.out.print("Wie viele Zahlen sollen sortiert werden: ");
        Count = eingabewert.nextInt();

        Integer list[] = intList();
        org = list.clone();
        Bubblesort();
        System.out.print("Original: ");
        printArray(org);
        System.out.print("\nSortiert: ");
        printArray(list);
        eingabewert.close();
    }

    public static void printArray(Integer[] toPrint) {
        for(int i = 0; i < toPrint.length; i++) {
            if(i < toPrint.length-1)
            {
                System.out.print(toPrint[i]+ ", ");
            } else {
                System.out.print(toPrint[i]);
            }
        }
    }

    public static Integer[] intList() {
        Integer[] nums = new Integer[Count];
        Random rand = new Random();
        for (int i = 1; i <= nums.length; i++)
        {
            nums[i - 1] = rand.nextInt((int) (System.currentTimeMillis()/1000000000));
        }
        return nums;
    }

    public static void Bubblesort() {
          int n = list.length;
          int temp = 0;
          boolean swapped;
                  do{
                    swapped = false;
                    for (int i=0; i < n-1; ++i)
                    {
                        if (list[i] > list[i+1])
                        {
                            temp = list[i+1];
                            list[i+1] = list[i];
                            list[i] = temp;
                            swapped = true;
                        }
                    }
                    n = n-1;
                  } while (swapped);
    }
}

输出:

Wie viele Zahlen sollen sortiert werden:5 原:443、322、183、574、108 排序:443、322、183、574、108

最佳答案

您应该将参数传递给您的方法,而不是声明静态字段。在这种情况下发生的情况称为阴影。您正在对未初始化的静态变量而不是已初始化的列表调用 length 方法。 您可以像这样重写您的程序:

import java.util.Random;
import java.util.Scanner;

public class Bubblesort {
    public static void main(String[] args) {
        Scanner eingabewert = new Scanner(System.in);
        System.out.print("Wie viele Zahlen sollen sortiert werden: ");
        int count = eingabewert.nextInt();
        Integer list[] = intList(count);
        Integer org[] = list.clone();
        bubblesort(list);
        System.out.print("Original: ");
        printArray(org);
        System.out.print("\nSortiert: ");
        printArray(list);
        eingabewert.close();
    }

    public static void printArray(Integer[] toPrint) {
        for(int i = 0; i < toPrint.length; i++) {
            if(i < toPrint.length-1)
            {
                System.out.print(toPrint[i]+ ", ");
            } else {
                System.out.print(toPrint[i]);
            }
        }
    }

    public static Integer[] intList(int count) {
        Integer[] nums = new Integer[count];        
        Random rand = new Random();
        for (int i = 1; i <= nums.length; i++)
        {
            nums[i - 1] = rand.nextInt((int) (System.currentTimeMillis()/1000000000));
        }
        return nums;
    }

    public static void bubblesort(Integer list[]) {
        int n = list.length;
        int temp;
        boolean swapped;
        do{
            swapped = false;
            for (int i=0; i < n-1; ++i)
            {
                if (list[i] > list[i+1])
                {
                    temp = list[i+1];
                    list[i+1] = list[i];
                    list[i] = temp;
                    swapped = true;
                }
            }
            n = n-1;
        } while (swapped);
    }
}

关于java - .length 函数始终返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60755935/

相关文章:

java - 使用 XJC 将 XML 模式转换为 Java 类

java - Springboot - 从 application.yml 注入(inject),具体取决于方法名称

javascript - 如何防止向 javascript 数组添加重复键

javascript - 使用 jQuery 解析 XML 文本

Java AWT - 绘制由平滑曲线连接的多边形

java - Android自定义RxJava多次调用

php - mysql fetch array 如果没有结果显示消息

c - 冒泡排序ideone超过时间限制

c - 冒泡排序 C - 链表

c - C 中文件的冒泡排序