2017-02-21 117 views
-1

First class(Player.java);班級不穩定

public class Player{ 
    int[] playercash = {1500,1500,1500,1500,1500,1500}; 
    int[] playerinvertory = {0,0,0,0,0,0}; 
    int[][] playeritemlist = new int[6][20]; 
    int[][] playeritemdurability = new int[6][20]; 

    int getCash(int playerid) { 
     return playercash[playerid-1]; 
    } 

    void giveCash(int playerid, int add) { 
     playercash[playerid-1] += add; 
    } 
} 

Second Class(Robot.java);

public class Robot { 
    Player p = new Player();//Call player class 

    void giveCash(int playerid) { 
     p.giveCash(1,-3000); 
    } 
} 

Main;

public class Main { 
    public static void main(String[] args) { 
     Player player = new Player(); 
     Robot robot = new Robot(); 
     player.giveCash(1, -2000);//1500-2000 = -500 
     System.out.println(player.getCash(1)); //Write -500 
     robot.giveCash(1); 
     System.out.println(player.getCash(1)); //Write -500 
    } 
} 

也就是說,robot.giveCash不給現金。我認爲機器人班不叫player班。我想寫-3500,但它顯示-500

+0

'Robot'是Java中的現有類了。儘量不要使用已存在的類的名稱。其他的例子是一個名爲'String' – XtremeBaumer

回答

0

機器人已經在JAVA中存在類。

該類用於生成本地系統輸入事件,用於測試自動化,自運行演示和需要控制鼠標和鍵盤的其他應用程序。 Robot的主要目的是促進Java平臺實現的自動化測試。

https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

+0

的類,這不是真正的問題,但我可以導致其他問題 – XtremeBaumer

+0

是的,你是對的。我沒有注意到Robot類每次都創建一個新實例。現在得到了什麼問題。謝謝 – dheerajraaj

+0

@XtremeBaumer,但我想知道爲什麼它不會產生任何問題,如果我們將重新使用JAVA中已存在的類名稱? – dheerajraaj

0

你犯錯誤,你在你的機器人類,這是一樣創建一個新的PlayerPlayer您在入門級的創建。因此你有兩個不同的Players。您嘗試向主類中的Player添加一些現金,但Robot有不同的Player他增加了現金。要解決此問題,通過玩家你的機器人類的這樣的giveCash方法:

public class Robot{ 

    void giveCash(int playerid, Player p) { 
     p.giveCash(1, -3000); 
    } 
} 
0

Robot類創建和更新單獨的Player實例。一種解決方案是你的Player實例傳遞到構造函數:

public class Robot { 
    private final Player p;//Call player class 

    public Robot(Player p) { 
     this.p = p; 
    } 

    public void giveCash(int playerid) { 
     p.giveCash(1,-3000); 
    } 
} 

你會這樣稱呼它:

Player player = new Player(); 
Robot robot = new Robot(player); 
+0

時,您不需要爲每個玩家選擇一個機器人嗎? – XtremeBaumer

+0

@XtremeBaumer這並不完全清楚,但OP似乎希望機器人對播放器1進行硬編碼。 – shmosel

+0

好吧,可能是這樣。但我認爲,最好有一個機器人來處理所有的球員,因爲內存等。仍然是一個可能性,作品 – XtremeBaumer