2011-02-18 100 views
2

如果有人能夠幫助我解決以下問題,會很高興。下面的方法假設返回一個數組,其第i個條目是int i出現在數組a中的次數。方法名稱給出了使用這種方法。繪製數組a中找到的數據的直方圖。Java - 從方法返回數組主要

public static int histogram(int M, int[] a){ 

     int[] b = new int[M]; 

     for (int i = 0; i < M; i++){ 

      int w = 0; 

      for (int j = 0; j < a.length; j++){ 

      if (a[j] == i){ 
      w++; 
      } 
     } 

      b[i] = w; 

    } 

    return b; 
} 

Accoring給我的代碼是正確的 - 這可能是錯誤的 - 我不能測試它,因爲我有一個錯誤,多數民衆贊成真的纏着我。

Histogram.java:22:不兼容類型 找到:int [] 必需:int return b;

1)以上是什麼意思?以互聯網和我的手冊爲例,他們也只使用「return b;」將數組返回給主程序。

2)返回函數的工作原理是什麼?我能否使用下面的代碼來打印數組b的值?因爲此刻我得到一個錯誤,以及數組b沒有在main中初始化......我認爲如果錯誤1被排除,錯誤將消失。我是JAVA新手,所以我不會真的知道 - 編程也是新手。

for (int x = 0; x < M; x++){ 

     System.out.printf("%d ", b[x]); 

    }` 

3)我應該打印直方圖()方法中的值嗎?要回答的問題是,儘可能地將數組中的直方圖值「返回」。

真的會很高興,如果你能幫助... ...

如果你已經走到這一步 - 非常感謝......即使只是閱讀到這裏意味着很多:)

+0

您可以簡單地使用`System.out.println(Arrays.toString(b))`來打印整個數組,而不是使用`printf`和一個循環。 (這是`java.util.Arrays`。)看起來有點不同,但。 – 2011-02-18 23:43:01

+0

@Ebermann謝謝,非常感謝。請記住,爲了未來! – ISJ 2011-02-20 17:17:42

回答

9

你應該嘗試返回一個int數組,而不是一個整數

public static int[] histogram ... 

的我不知道約2 & 3,雖然。

2)return不是函數,它是導致您離開方法的關鍵字。
3)你可以,如果你想。

編輯
histogram方法中聲明的變量無論呆在那裏,他們是本地的。如果您想在main方法中使用某個變量,請聲明它。例如,

int[] b = histogram(param1, param2); 
+0

@Nikita您好,非常感謝!現在這個錯誤消失了。第二個錯誤仍然存​​在。數組b中沒有啓動主數據庫...我應該怎麼做才能在main中打印返回的數組?再次感謝 - 真的很感激。 – ISJ 2011-02-18 22:30:39

3

2)你的主要應該是這樣:

int[] b = histogram(M, a);

3)沒有,最好你如何擁有它,我認爲 - 保持輸入/輸出的東西,在主並且直接在柱狀圖方法中自己保留直方圖構建的東西。

0
Public static int[] // since the return is an array 

我想你可以調用該方法在main method histogram();,並希望它會工作。

0

當你期運用數組你shuld它寫在一個類的方法不

類的身體

,並返回不是一種方法或功能,它只是我們在使用關鍵詞我們方法

所以寫在方法,然後再編譯它!