2014-07-25 27 views
1

這是我第一次發佈到這個博客。我是Java的新手,當用戶輸入一組值時,我遇到了使用冒泡排序的問題。以下是我的代碼;然而,我正在尋找更多的建議,然後回答,因爲我不會用答案來學習語言。用戶輸入int到數組然後使用冒泡排序來排序數字

感謝您的幫助,再次抱歉,如果我的代碼有點複雜。順便說一句,我剛開始學習Java,因此我將無法遵循非常複雜的編碼建議。

import java.util.Arrays; 
public class bubbleSort{ 

    public static void main(String[] arg){ 

     java.util.Scanner input = new java.util.Scanner(System.in); 
     System.out.println("Enter total amount of numbers:"); 

     int n = input.nextInt(); 

     int [] numbers = new int[n]; 

     System.out.println("Enter the numbers: "); 
     for (int i = 0; i < n; i++) { 
      numbers[i] = input.nextInt(); 
     } 

     System.out.println(list(n)); 

     bubbleSort(n); 

     System.out.println(list(n));  
    } 


    public static void bubbleSort(int[] n){ 

     boolean flag; 

     do{ 

      flag = false; 

      for(int i = 0; i < n.length - 1; i++){ 

       if (n[i] > n[i + 1]){ 

        int temp = n[i]; 
        n[i] = n[i + 1]; 
        n[i + 1] = temp; 

        flag = true; 
       } 

      } 

     } while (flag); 
    } 
} 
+4

那麼,什麼是你的問題? – DavidPostill

+2

「_我有一個問題_」你能解釋什麼是問題嗎?你的程序沒有運行?它會產生錯誤的結果嗎?這是怎麼回事? – csmckelvey

+0

@ChiefTwoPencils這將在'if(n [i]> n [i + 1])'檢查期間導致ArrayIndexOutOfBoundsException。 ...哦,他刪除了他的評論。 – Tom

回答

0

當您開始引用未定義的標識符list時,您的代碼有點困惑。

我認爲你需要:而不是

System.out.println(Arrays.toString(numbers)); 

bubbleSort(numbers); 

System.out.println(Arrays.toString(numbers)); 

System.out.println(list(n)); 

bubbleSort(n); 

System.out.println(list(n));  

n輸入號碼的數量,不是你想進行排序。 numbers包含輸入數據,並且是一種更合理的排序方式。

+0

非常感謝你...當我調試這段代碼時,我嘗試了你的解決方案,但我忘了添加第二個(),並在數組的末尾添加s,所以我認爲它是錯誤的。再次感謝你 – Andrewbravo

-1

所以讓我們把一些關於你的代碼的更多信息。

  • 第一項:使用Java Naming Convention。你的班級名稱爲bubbleSort,當它應該是BubbleSort
  • 第二:除非是constructor,否則不要創建具有相同名稱的方法。
  • 三:Java是Strongly typed這意味着(在你的情況下),如果您創建的接收參數爲int[] nbubbleSort(int[] n))的方法,這意味着你只傳遞給它int's數組
  • 第四:不要t使用不存在的方法(例如:list(n),至少在您的班級上)

這些是您提供的代碼的好建議。希望它能幫助你更多地瞭解Java世界。

+0

Downvoter會介意解釋原因嗎? –

+0

謝謝你的信息 – Andrewbravo

+0

@Andrewbravo很高興幫助。我仍然不明白爲什麼我會陷入低谷。我知道那不是你。 –

0

您的代碼存在問題。

System.out.println(list(n));//list(n)came out of nowhere

而且你的代碼似乎數組元素的只有理清一個。

你可以試試這個:

public class BubbleSort { 
public static void main(String[] args){ 
    int[] myArray = new int[10]; 
    for(int i = 0; i < myArray.length; i++){ 
     myArray[i] = (int)(Math.random()* 100 + 1); 
     System.out.print(myArray[i] + " "); 
    } 
    System.out.println(); 
    bubbleSort(myArray); 
} 
public static void bubbleSort(int[] array){ 
    for(int i = 0; i < array.length - 1; i++){ 
     for(int j = 0; j < array.length -1 - i; j++){ 
      if(array[j] > array[j+1]){ 
       int temp = array[j+1]; 
       array[j+1] = array[j]; 
       array[j] = temp; 
      } 
     } 
    } 
    for(int i = 0; i < array.length; i++){ 
     System.out.print(array[i] + " "); 
    } 
} 
+0

謝謝你的信息:) – Andrewbravo