簡體   English   中英

如何從void方法打印結果

[英]How can I print a result from a void method

我正在為我的編程課入門做作業,這是一種冒泡的選擇。 代碼可能有缺陷,但是我不是在尋找解決這個問題的人。 我的問題是,我正在嘗試打印它。 我得到的條件是該方法必須由void方法在“公共靜態void sort(int []數組)”行中定義。 因此,如果我嘗試導入Arrays,並使用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

問題在於您在sort方法內創建了一個新的本地數組,由於分配的限制,您顯然無法返回該數組。

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

您的方法將無效,因為傳遞的數組將保持不變。 您需要進行適當的排序,即無需創建新數組。 這樣,如果您從主方法傳遞它,它將被排序並可以在此處打印。

冒泡排序應使用交換方法,因此您只需要一個臨時變量。

為了打印數組,您需要在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關於本地數組的內容。 使用作為參數傳遞給方法的數組,不要創建新數組。

Arrays.sort()修改您傳入的數組。因此,如果您遍歷該array對象並在調用Arrays.sort()之后打印元素,它將為您打印。

由於您有一個無效的排序方法,因此您希望它對數組進行排序是一種副作用。 也就是說,修改您作為方法參數傳遞的int[] array引用中的值。 然后您可以從main打印它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM