2016-11-15 50 views
-1

我在一個叫做口袋妖怪的類中有這些setter和getters,但是我想製作一系列的攻擊,速度和防禦。我如何將我的getter中使用的東西放入此方法中?我試圖在另一個名爲Pokedex的類中創建這個數組,但是我得到一個錯誤,提示這些方法無法解析或者不是字段。注意:這些類所在的java文件恰好位於同一個包中。如何使用不同班級中的獲得者?

public int [] checkStats(String species){ 

    int [] stats = {Pokemon.getDefense, Pokemon.getSpeed, Pokemon.getAttack}; 
    return stats; 

} 

public int getAttack(){ 
    return attack; 
} 


public void setAttack(int atk){ 

    attack = atk; 
} 


public int getDefense(){ 
    return defense; 
} 


public void setDefense(int def){ 

     defense = def; 
    } 


public int getSpeed(){ 
    return speed; 
} 


public void setSpeed(int spd){ 

    speed = spd; 
} 
+1

你正試圖調用這些方法的口袋妖怪? –

+0

也許一個很大的提示是,你正將'String species'傳遞給'checkStats',但從來沒有使用它。它看起來像你正在使用一些靜態字段。瞭解這意味着什麼。 –

+0

1.缺少括號2.在類3上調用getter。格式化...如果我是你,我會先閱讀OOP基本原則。很難回答這個問題,不知道OOP –

回答

0

你缺少括號()這裏:

{Pokemon.getDefense, Pokemon.getSpeed, Pokemon.getAttack}; 

用途:

{getDefense(), getSpeed(), getAttack()}; 

OR:

{this.getDefense(), this.getSpeed(), this.getAttack()}; 

附:Pokemon.getDefense()這適用於靜態方法。

+0

謝謝,這幫我弄清楚了我的問題。 –

0

我看到的主要問題是Pokemon.getDefense不是您在課堂上獲得的靜態屬性或字段。你有一個getDefense()方法,但這不是在這裏引用。

您也不需要該參數,因此可以安全地移除。

您可以在方法更改爲簡單的東西,這將彙編和意義:

public int[] checkStats(){ 
    return new int[]{ getDefense(), getSpeed(), getAttack() }; 
} 
+0

我實際上確實需要這個參數,但我從來不知道你可以返回一個完整的數組而不先把它分配給一個變量,所以感謝新的知識。 –

+0

@Tip_tap:你沒有使用參數,所以傳入它是沒有意義的。你可以傳入'null',它仍然會有相同的效果。 – Makoto

0

當你調用Java中的方法,你必須給他們打電話與支架爲左右(這個關鍵字指到「這個」類在這種情況下是口袋妖怪)

this.getDefense(); 

也是我勸你改變制定者使用

this.attack=attack 

this.attack是指在該類中初始化的攻擊,並且攻擊者自己的攻擊是指傳入該方法的攻擊。

這會讓你免於將攻擊改爲攻擊等。它只是讓你的生活更輕鬆,你的代碼更易於閱讀。如果你想看看這個概念看看here。希望這可以幫助你!

+0

安裝人員很好;這主要是一個分散編譯失敗的紅鯡魚。在這種情況下,「這個」不是必需的,但可能比其他任何方式更偏向風格。 – Makoto

+0

我忘了粘貼代碼從攻擊防禦和速度如何計算我對這個網站相當新,我爲我的無知道歉,但這確實幫助我,雖然,謝謝。 –

相關問題