2012-10-08 55 views
1
public class negativeTest { 

    public static int Negativenum (int[] array) { 

     int negative = 0; 
     for (int i = 0; i < array.length; i++){ 
      if(array[i] < 0){ 
       negative = negative + 1; 
      } 
      System.out.println(negative); 

     } 

    } 

} 

我試圖計算數組中有多少元素是負數。這是我迄今爲止。我的問題是:eclipse是告訴我,我應該返回一個void而不是靜態int?我怎樣才能做到這一點,而不使用void?創建一個方法,可以計算一個數組中的負數

我想使用

public static int negativenum(int[] array){ 

只有這樣我能得到這個工作是創建一個正數和負數的數組,並指望他們,但我希望能有方法做,沒有創建一系列數字。你可以幫我嗎?

+2

也許它的抱怨是因爲你沒有返回任何東西。 –

回答

1

錯誤是因爲您沒有從預計返回int的函數返回任何內容。

如果你想要的功能來計算負數的數量和返回數量,使得函數的調用者得到的數量,您可以在函數結束前添加一個

return negative; 

另外,如果你不想從函數返回任何東西,只想打印計數作爲函數調用的一部分,可以從改變函數的返回類型intvoid

public static void Negativenum (int[] array) { 
1

試着給出一個return語句,你的方法需要一個int作爲返回參數。 因此它會給編譯器錯誤。你得到

public class negativeTest { 

    public static int Negativenum (int[] array) { 

     int negative = 0; 
     for (int i = 0; i < array.length; i++){ 
      if(array[i] < 0){ 
       negative = negative + 1; 
      } 
      System.out.println(negative); 

     } 
     return negative; 
    } 

} 

療法的錯誤是因爲你沒有聲明的類內main功能。

您必須從主函數調用Negativenum

,你可以做這樣的:

public static void main (String args[]) 
{ 
negativeTest nt = new negativeTest(); 
int [] array = new int[]{ 100,200 }; 
int count = nt.Negativenum(array); 
System.out.println(count); // It will print **2** 
} 

關於你的疑惑,你問的意見。

只有當您要使用調用函數返回的值時,才必須從函數返回任何東西。 否則,如果您只想在控制檯上打印該值或記錄該值,則可以在negativeTest函數中輕鬆完成此操作,並且可以將此函數的返回類型更改爲void。

僅供參考,您不應該使用小寫字母開始您的類名。

+0

請添加解釋以使答案相關。 –

+0

所以我可能不需要打印聲明,如果我返回負面然後我拿?當你有一個返回類型int public static「return type」negativeNum(int [] array) 你說的是什麼?你必須返回與你在return方法頭中指定的相同的時間嗎? –

+0

否則,如果你使用void你不需要? –

1

您的函數簽名提示int的返回類型,但是您沒有從函數返回任何東西。我懷疑這就是爲什麼Eclipse建議你改變函數簽名來返回void。

如果您添加return negative;它應該避免來自Eclipse的通知。

如果你的意圖是簡單地打印計數,那麼你應該改變返回類型。

+0

謝謝生病嘗試,所以這種方法會像我打算這樣工作? –

+0

我不會建議他在沒有確切知道他想要返回的原因的情況下返回任何東西(如果有的話)。 – Isaac

+0

那麼你有一個小範圍的問題;由於'println'位於'for'循環的主體中,因此您將繼續爲數組中的每個項目打印計數。除此之外(和返回類型不匹配),它看起來沒問題。 –

0

如果你不想返回任何東西,設定你的方法的簽名無效,但添加了變數,就像這樣:

public static void NegativeNum(int[] array, out int negative) 
{ 
    negative = 0; 
    foreach(int i in array) { if (i < 0) negative++; 
} 

,那麼你只需要聲明負面無論這種方法是從所謂的,並把它傳遞作爲一個變量:

int negative = 0; 
NegativeNum(array, out negative); 

在那次調用之後,負數將包含由該方法確定的負數的計數。

+0

如果我想只使用靜態int ..如何使用此代碼中的return語句?我不想使用void。 –

+0

你的代碼不會用Java編譯。大課:Java **永遠不會**通過引用傳遞,只有通過價值。 –

+0

如果你想實際返回值,首先將返回類型聲明爲int而不是void,然後一旦你的計數完成,只需返回「返回計數」;線。如果你有if子句,切換子句,嘗試catch子句,那麼每個子句類型的每個分支都必須返回一些東西,否則你會得到一個編譯器錯誤。即使你返回零,或-1,你必須返回一些東西。你調用這個方法的代碼可以有邏輯來查找-1返回來知道該方法有錯誤或其他 – Wanabrutbeer

相關問題