我需要编写一个程序,它使用冒泡排序方法和主要功能,要求用户输入他们的数组。之后,程序按升序对数组进行排序。我的程序现在询问用户的输入,但一旦发生这种情况,程序将无法编译而且我被卡住了。这是代码:
import java.util.Scanner;
public class IntSorter{
public static int bubbleSort(int[] a){
boolean needNextPass =true;
for(int i=1; i<a.length && needNextPass; i++){
needNextPass = false;
for(int j=0; j<a.length - i; j++){
if(a[j]> a[j+1]){
int temp = a[j];
a[j]=a[j+1];
a[j+1] = temp;
needNextPass = true;
}
}
}
for(int i=0; i<a.length; i++){
System.out.print(a[j] + " ");
}
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter size of array: ");
int N = input.nextInt();
int[] x = new int[N];
System.out.print("Enter " +N +"numbers of your array: ");
for(int i= 0; i<N; i++){
x[i] = input.nextInt()
}
IntSorter access = new IntSorter();
System.out.print("Your sorted array is: ");
access.IntSorter(x);}
}
答案 0 :(得分:1)
您的主要方法的最后一行是: -
access.IntSorter(x);
将此行替换为: -
access.bubbleSort(x);
使用single uppercase
字符作为变量很糟糕..使用size
代替数组的大小..
System.out.print("Enter " +N +"numbers of your array: ");
for(int i= 0; i<N; i++){
x[i] = input.nextInt()
}
在上面的代码中,如果用户没有输入整数值怎么办?你会得到一个例外..你需要抓住那个..
答案 1 :(得分:0)
这一行似乎缺少分号:
x[i] = input.nextInt()
您似乎在其范围之外访问变量j
:
System.out.print(a[j] + " ");
答案 2 :(得分:0)
您可以使用i
代替未定义的j
:
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
另外
public static int bubbleSort(int[] a) {
没有int
返回值;
您可以使用编译器或IDE来帮助突出显示这些问题。