2012-10-31 69 views
2

因此,我剛剛在幾周前開始使用Java,並試圖自學如何製作自己的方法。當我編譯「ClassTest」類時,我製作了一個增加兩個數字的程序。以下是錯誤:調用自己的方法時出錯

H:\Java Things\ClassTest.java:10: error: cannot find symbol 
      GetNum(int1, int2); 
     ^
    symbol: method GetNum(int,int) 
    location: class ClassTest 
1 error 

Process completed. 

這裏是ClassTest代碼:

import LotsOfMethods.*; 

public class ClassTest 
{ 
    public static void main (String[] args) 
    { 
     int int1 = 5, int2 = 7; 
     GetNum(int1, int2); 
    } 
} 

這裏是代碼ExampleMethod

package LotsOfMethods; 

public class ExampleMethod 
{ 
    public static int GetNum(int num1, int num2) 
    { 
     int result; 
     result = num1 + num2; 
     return result; 
    } 
} 
+1

嘗試**將靜態LotsOfMethods.ExampleMethod.GetNum; **導入到ClassTest.java中 – chepseskaf

回答

1

首先,瞭解如何在Java中調用方法很重要。您需要指定將實現該方法的對象以及您要調用的方法的名稱。

當你寫:

GetNum(int1, int2); 

你不指定對象,將執行GetNum。 Java有一些默認行爲來處理這種情況:它試圖從圍繞代碼的對象上下文中解析該方法。所以Java說,「我無法找到屬於這個ClassTest對象GetNum()方法,」和你的錯誤:

H:\Java Things\ClassTest.java:10: error: cannot find symbol 
      GetNum(int1, int2); 

要在類ExampleMethod的方法。它是一個附加到ExampleMethod類的靜態方法,這意味着您不需要實例化副本就可以到達那裏。相反,你可以這樣做:

int result = ExampleMethod.GetNum(int1, int2); 

類的靜態方法提供了一種圍繞這些方法的命名空間,所以類本身提供了足夠的數據來解決你的方法。如果你有一個非靜態的方法,你需要做類似的事情:

ExampleMethod example = new ExampleMethod(); 
int result = example.GetNum(int1, int 2); 

我希望這有助於。

+0

標準慣例是隻用小寫字母和方法開始類名,因此首選的方法名是'ExampleMethod.getNum ()' - 雖然命名一個類ExampleMethod也有點混亂。 – doublesharp

+0

謝謝,我得到它的工作!有沒有任何文章解釋「靜態」和「非靜態」之間的區別? – lightice11

0

您可以移動GetNum()方法放入ClassTest類,或者您可以將GetNum()呼叫更改爲ExampleMethod.GetNum()。不知道爲什麼你有一個名爲'ExampleMethod'的單獨的類。一般來說,你通常不需要定義一個新的類來包含每個方法的定義。