2013-02-01 50 views
1

我想使用我創建的類,但是當我調用類時不起作用,而且我有點迷失。在Java中使用類

錯誤發生在類調用和在程序底部初始化Tally。

package counter; 

public class Counter { 
    private int value; 
    public Counter(int intialValue){ 
     value = intialValue; 
    } 

    private void count() { 
     value = value + 1; 
    } 
    private void reset(){ 
     value = 0; 
    } 
    public int getValue(){ 
     return value; 
    } 

    Counter tally = new Counter(); 
    tally.count(); 

    } 
+0

不應該有一個默認的構造函數嗎? – sgarizvi

+0

什麼時候預計最後兩行將被調用? – Mordechai

+0

在類中不能有類似的程序調用(它們不是在方法中)您需要將該代碼移動到啓動時運行的主要方法。 – jzworkman

回答

7

所有Java語句必須納入某種方法。

當前您的最後兩行不在方法中。

Counter tally = new Counter(); 
tally.count(); 

嘗試是這樣的:

public class Counter { 

    ... existing members ... 

    public static void main(String[] args) { 
    int initialValue = Integer.parseInt(args[0]); 
    Counter tally = new Counter(initialValue); 
    tally.count(); 
    } 
} 
+0

實際上第一行很好.'Counter tally = new Counter(someintval);'這只是一個在線初始化) – PermGenError

+0

正確。它將聲明並初始化一個名爲'tally'的包保護實例變量。 (但是這幾乎肯定不是想要的東西。) –

+0

謝謝,我沒有意識到Java需要內部的主要方法。 – Bob

0

tally.count();應該在方法體內。

public void someMethod() { 
    tally.count(); 
} 

此外,編譯器將不包括默認的無參數的構造你的類,因爲你已經寫了一個1參數的構造函數,所以你將有一個有效的int值傳遞給你的構造。

Counter tally = new Counter(someintval); 
+0

downvoter評論請.. :)不要告訴我,你downvoted我,因爲我dint包括主..:P – PermGenError

+1

upvote從我,以egalize downvote,並becauee其正確答案 – AlexWien

+0

@AlexWien謝謝,它會一直不錯,如果downvoter留下了評論.. :) – PermGenError

1
Counter tally = new Counter(); 
tally.count(); 

是任何方法之外,這是錯誤。

+0

第一行是好的(除了參數,以及 - 正如Nathen指出的那樣 - 無限遞歸) – Mordechai

+0

無論它是否是無限遞歸,取決於這兩個無效行將如何變得清晰。 – AlexWien

0

你沒有通過一個值的類的實例:

Counter tally = new Counter(10); 

或者,也許是因爲它不是一個

public static void main(String args) 

方法體內

3

從到目前爲止,你已經證明什麼,它看起來像你的類反有一個計數器作爲一個實例成員,讓你有無限的迴歸嘗試實例化這個。你不會給出錯誤,但我期望產生一個StackOverflowError。

這假定它已編譯,不應該發生,因爲行tally.count()應該不合法。進入類的唯一的東西是構造函數聲明,方法聲明,變量聲明,初始化塊和嵌套的內部類聲明。您班級底部的代碼不會被視爲任何這些代碼。

此外,如果您包含帶參數的構造函數,那麼如果要調用零參數構造函數,則必須明確創建一個構造函數。調用不存在的零參數構造函數的代碼將導致另一個編譯器錯誤。

所以你對構造函數有一個誤解,再加上對在類中聲明事物意味着什麼的困惑。

+0

Gr8,+1 ........ – Mordechai