2013-06-30 207 views
0

我使用的命令行參數爲這一個:Java我在這裏做錯了什麼?

public class Pg253E4 { 
    public static void main(String[]args) { 
     try { 
      System.out.println(Average.average(args)); // This part is saying I don't have a method in Average called average(String[] argName) 
     } catch(NullPointerException e) { 
      System.out.println(e.toString()); 
     } catch(NumberFormatException e) { 
      System.out.println(e.toString()); 
     } finally { 
      System.out.println("Nice job"); 
     } 
    } 
} 

而這是其他類:

public class Average { 
    public static double average(String[] arrayString) throws NullPointerException,NumberFormatException { 
     double sum=0; 
     double arrayStorage[] = new double[arrayString.length]; 

     for(int i = 0; i< arrayString.length; i++) { 
      arrayStorage[i] = Double.parseDouble(arrayString[i]); 
     } 
     for(int i = 0; i<arrayString.length; i++) { 
      sum += arrayStorage[i]; 
     } 
     return (sum/arrayString.length); 
    } 
} 

我不明白爲什麼一個語法錯誤彈出說我的天堂在我明確表示的時候,我沒有在Average課程中聲明或定義任何叫做average(String[] argName)的方法。

+0

在你的類路徑中是否平均? –

+2

與'Pg253E4'在同一包中是'Average'?如果沒有'平均'被導入到'Pg253E4'? – ubiquibacon

回答

1

嘗試在你的主類創建Average類型的新對象。要做到這一點寫在下面一行在您的主要方法:
Average a = new Average();

,然後改變你的System.out.println(Average.average(args))
System.out.println(a.average(args))

+3

創建「Average」類型的對象時不需要,「Average.average()」方法是靜態的。 – ubiquibacon

+0

不用擔心它的工作 – user2522281

0

如果你不使用你需要確保包Average被導入到你的Pg253E4類:

import Average; // Assuming "Average" is not in a package. 

public class Pg253E4 
{ 
    // The rest of your stuff 
} 

可能是最好的,雖然使用至少一個包:

package yourpackage; 

public class Pg253E4 
{ 
    // The rest of your stuff 
} 

package yourpackage; 

public class Average 
{ 
    // The rest of your stuff 
} 

如果Pg253E4Average沒有共同的東西是在同一個包,那麼他們應該都放在自己的包,在這種情況下,你將不得不進口AveragePg253E4再次:

package yourfirstpackage; 

import yoursecondpackage.Average; 

public class Pg253E4 
{ 
    // The rest of your stuff 
} 

package yoursecondpackage; 

public class Average 
{ 
    // The rest of your stuff 
} 
+1

它們在同一個包中(默認包) – user2522281

+0

Java在使用默認包時存在類和方法訪問問題的歷史記錄。閱讀[這裏](http://stackoverflow.com/a/283828/288341),[這裏](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4989710)和[這裏]( http://mindprod.com/jgloss/import.html)。幾乎總是建議使用軟件包,而不是默認軟件包。正確使用軟件包,您不必實例化類就可以訪問其中一個靜態方法,因爲您選擇的答案已經指示您執行該操作。 – ubiquibacon

相關問題