2013-11-09 131 views
0

我正在爲編程類的介紹做一個任務,它是一個冒泡排序。代碼可能有缺陷,但我不想找人來解決這個問題。我的問題是,我試圖打印它。我已經給出了條件,該方法必須由一個無效方法由行「public static void sort(int [] array)」定義。所以,如果我嘗試導入數組,並且在我的主要方法中使用了System.out.println(Arrays.toString(sort(array)));,它將無法工作,因爲我收到編譯器錯誤,指出void不適用。如果我試圖將它放在主方法的循環中,它會告訴我存在不兼容的類型。找到的是一個void,需要的是int [],但是賦值的原始條件是使用void方法。所以,據說,我應該將方法從void更改爲int []以用於測試目的,並將作業提交爲void,或者是否有方法將此代碼的輸出與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 
+1

調用排序方法後,您應該只需打印發送給此方法的數組 – MadProgrammer

+0

更正縮進將會很好。看看這是多麼的混亂 - 你甚至不得不註明右大括號,找到它! –

回答

2

問題是你在你的排序方法中創建了一個新的本地數組,因爲你的賦值限制你顯然不能返回。

int[] y = new int[array.length]; 

您的方法將無效,因爲傳遞的數組將保持不變。您需要進行排序,即不創建新陣列。所以如果你從你的主要方法傳遞它,它會被分類,你可以在那裏打印。

Bubble sort應該使用swap方法,所以你只需要一個臨時變量。

0

Arrays.sort()修改你傳遞數組。所以,如果你遍歷array對象並打印元素您的來電Arrays.sort()後,將打印爲您服務。

+0

在編程類的介紹中調用Arrays.sort可能不是,本課的內容。 –

0

既然你有一個無效排序方法,你希望它排序數組作爲副作用。也就是說,修改您作爲方法參數傳遞的int[] array引用中的值。然後你可以從主打印它。

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說一下你的本地陣列。使用您作爲參數傳遞給您的方法的數組,不要創建一個新的數組。

+0

...方便打印沒有循環 – A4L