头等(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
。
答案 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);