我正在为我的编程类介绍做一个任务,这是一个冒泡排序。代码可能有缺陷,但我不是在找人来解决这个问题。我的问题是,我正在尝试打印它。我被赋予了这样的条件:该方法必须由“public static void sort(int [] array)”行的void方法定义。所以,如果我尝试导入数组,并在我的main方法中使用System.out.println(Arrays.toString(sort(array)));
,它将无法工作,因为我收到编译器错误,说明void不适用。如果我试图将它放在main方法的循环中,它会告诉我存在不兼容的类型。找到的是一个void,需要的是int [],但赋值的原始条件是使用void方法。所以,说到这一点,我应该将方法从void更改为int []以进行测试,并将赋值作为void提交,或者是否有办法用void打印此代码的输出,我只是缺少它?
public static void sort(int[] array)
{
int[] y = new int[array.length];
for(int i = 0; i<=array.length-1; i++)
{
for(int j = i+1; i<=array.length-1; j++)
{
if(array[i] < array[j]){
y[i] = array[j];
}
if(array[i] >= array[j]){
y[i] = array[i];
}
}
for(int k = 0; k<y.length; k++){
System.out.println(y[k]);
}
}
} //end of sort method
答案 0 :(得分:2)
问题是您在sort方法中创建了一个新的本地数组,由于您的分配限制,您显然无法返回。
int[] y = new int[array.length];
您的方法无效,因为传递的数组将保持不变。您需要在适当的位置进行排序,即不创建新阵列。因此,如果您从main方法传递它,它将被排序,您可以在那里打印它。
Bubble sort应使用swap方法,因此您只需要一个临时变量。
答案 1 :(得分:1)
要打印数组,请使用您需要的main
方法
//code that initializes the array or whatever
sort(myArray);
System.out.println(Arrays.toString(myArray)); //print the array modified by the previous method call
还要注意@ A4L对你本地阵列的评价。使用作为参数传递给方法的数组,不要创建新数组。
答案 2 :(得分:0)
Arrays.sort()
修改您传入的数组。因此,如果您遍历array
对象并在调用Arrays.sort()
后打印元素,则会为您打印。
答案 3 :(得分:0)
由于您有一个void排序方法,您希望它将数组排序为副作用。也就是说,修改作为方法参数传递的int[] array
引用中的值。然后你可以从main打印出来。