2012-12-11 108 views
0

我有一個這個問題的作業返回數組中的最大值?

寫一個函數maxArray接收double數組並返回數組中的最大值。使用此功能

double maxArray(double dar[], int size); 

我做了什麼,他想和我的主要方法內的調用句子有問題!

這裏是我的代碼:

public class Q3 { 

    public static void main(String[] args) { 
     double dar[] = { 22.5 , 10.23 , 15.04 , 20.77 }; 
     double max = maxArray(dar,4); 
     System.out.println("the largest number is : " + max); 
    } 

    double maxArray(double dar[], int size) { 
     double maxV = 0; 
     for (int i = 0; i < dar.length; i++) { 
      if (dar[i] > maxV) {   
       maxV = dar[i];   
      } 
     } 
     return maxV; 
    } 
} 

回答

3

你不能從main()調用你的方法的原因是,main()static,而你的方法是沒有的。

將其更改爲:

static double maxArray(double dar[], int size) 

當你在它,刪除size因爲它是沒有必要的。

也可能值得注意的是,如果數組包含負數,則您的方法將失敗。

+0

是的,你是正確的兄弟,thx很多,我沒有注意到:) –

0

聲明你maxArraystatic,這樣你就可以訪問它作爲一個靜態方法main()

您創建類的實例,並從該對象調用它。

1

您的maxArray方法是非靜態方法。您無法訪問從靜態方法非靜態方法無類的實例,你應該創建類的實例,並調用maxArray方法

double max = new Q3().maxArray(dar,4); 

或者,你總是可以標記您的maxArray方法靜態和調用它直接從主要方法。

0

你的問題是你正試圖從你的main方法中調用maxArray,一個非靜態方法,它是靜態的。這是一個問題,因爲非靜態方法只能從類的實例中調用,而靜態方法則是通過類本身調用的。

要麼讓你的maxArray成爲靜態方法,要麼在你的main方法中初始化一個Q3對象,然後像這樣調用maxArray。

0

你的方法是靜態的,所以你不得不說

static double maxArray(double dar[], int size) 

下面是一些提示,你如何改進你的方法: 因爲你不使用值「大小」一次,就可以把它扔掉或用i < size替換i < dar.length

此外,在maxArray方法的初始化maxV時,您可能需要使用數組(double maxV = dar[0])的第一個值,因爲如果陣列中的所有雙打是否定的,MAXV編號爲0將是最高的。(您也可以使用double maxV = Double.MIN_NORMAL來表示可能的最低雙精度值)。

0

1)使你的方法靜態
2)記住在java中使用BigDecimal類來做任何十進制算術。