类不稳定

时间:2017-02-21 08:35:35

标签: java eclipse 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;
    }
}

第二类(Robot.java);

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

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

主;

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

3 个答案:

答案 0 :(得分:0)

Robot已经是JAVA中的现有类。

  

此类用于生成本机系统输入事件,以用于测试自动化,自运行演示以及需要控制鼠标和键盘的其他应用程序。 Robot的主要目的是促进Java平台实现的自动化测试。

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

答案 1 :(得分:0)

你犯了错误,你在Robot类中创建了一个新的Player 与你在Starter类中创建的Player相同。因此,您有两个不同的Players。您尝试向主要课程中的Player添加一些现金,但Robot有一个不同的Player他将现金添加到。要解决此问题,请将播放器传递给Robot类的giveCash方法,如下所示:

public class Robot{

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

答案 2 :(得分: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);