Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将参数值作为变量值传递_Java_Variables_Parameters - Fatal编程技术网

Java 将参数值作为变量值传递

Java 将参数值作为变量值传递,java,variables,parameters,Java,Variables,Parameters,基本上,我在做一个游戏,我需要给角色增加生命值。当玩家点击蜘蛛的命中框时,我希望改变生命值并重新绘制框架。我觉得我做对了。这是我的密码: Frame.java: public static int redHealth; public static int blueHealth; public static void getBlueHealth(int health) { health = redHealth; } public static void getRedHealth(int

基本上,我在做一个游戏,我需要给角色增加生命值。当玩家点击蜘蛛的命中框时,我希望改变生命值并重新绘制框架。我觉得我做对了。这是我的密码:

Frame.java

public static int redHealth;
public static int blueHealth;

public static void getBlueHealth(int health) {
    health = redHealth;
}

public static void getRedHealth(int health) {
    health = blueHealth;
}

// Create health labels
public static JLabel redHealthLabel = new JLabel("Health: " + redHealth);
public static JLabel blueHealthLabel = new JLabel("Health: " + blueHealth);
if (Frame.spiderObj.intersects(Frame.blueCharacterObj)) {
    System.out.println("hit spider");
    Frame.getBlueHealth(97);
    Frame.frame.repaint();
    System.out.println(Frame.redHealth + "" + Frame.blueHealth);
}
Key.java

public static int redHealth;
public static int blueHealth;

public static void getBlueHealth(int health) {
    health = redHealth;
}

public static void getRedHealth(int health) {
    health = blueHealth;
}

// Create health labels
public static JLabel redHealthLabel = new JLabel("Health: " + redHealth);
public static JLabel blueHealthLabel = new JLabel("Health: " + blueHealth);
if (Frame.spiderObj.intersects(Frame.blueCharacterObj)) {
    System.out.println("hit spider");
    Frame.getBlueHealth(97);
    Frame.frame.repaint();
    System.out.println(Frame.redHealth + "" + Frame.blueHealth);
}
如您所见,我将
97
作为参数传递到
getRedHealth()
getBlueHealth()
方法中,然后将其设置为等于
redHealth
blueHealth
。但是,当我运行游戏并命中蜘蛛时,它会打印出
hit spider
,但不会更新运行状况


有什么帮助吗?

您最大的问题是,您试图“通过引用传递”来填充
健康状况,而不是实际返回它

应该是:

public static int getBlueHealth() {
    return blueHealth;
}
另外:您可能不需要getter,因为bluehealth已经是
public static


即使可以通过引用传递,使用常量调用它也会失败。您的调用代码不清楚您想要的是getter还是setter。

您的赋值是向后的;您需要
redHealth=health
blueHealth=health
。我建议您检查一下。首先,我建议您将
getXXX()
方法更改为
setXXX()
,因为您正在更改值,而不是读取它们。第二,我建议您添加一些SOP语句或使用调试器来确定代码正在做什么。谢谢John和isbadawi:)修复了我的问题。干杯