出于某种原因,我的“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/