2012-10-01 74 views
0

我需要編寫一個程序,使用氣泡排序方法和主要功能,要求用戶輸入他們的數組。之後,程序按升序對數組進行排序。我的程序現在要求用戶輸入,但是一旦發生這種情況,程序將無法編譯,我被卡住了。下面的代碼:按升序排列的氣泡 - 程序無法編譯

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);} 
} 
+1

'但是一旦發生這種情況,程序將不會編譯': - 您的程序在您已經運行後不能編譯? –

+0

你收到什麼信息? – raam86

回答

0

此行似乎缺少一個分號:

x[i] = input.nextInt() 

而且你似乎是進入其範圍的變量j外:

System.out.print(a[j] + " "); 
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() 
    } 

而在上面的代碼中,如果用戶什麼沒有輸入一個整數值?你會得到一個例外。你需要趕上..

+0

好的,我修復了你指出的所有錯誤,並且程序正在運行。謝謝 –

+0

@ChaseChensta .. Congrats .. :) ..但是請考慮處理您可能通過用戶輸入來得到的'exception'.. –

+0

@ChaseChensta ..並且您需要通過單擊其上的大箭頭來接受其中一個答案每個問題的左側 –

0

你可以使用i代替j這是不確定的:

for (int i = 0; i < a.length; i++) { 
    System.out.print(a[i] + " "); 
} 

而且

public static int bubbleSort(int[] a) { 

沒有int返回值;

您可以使用您的編譯器或IDE來幫助突出顯示這些問題。