我有两种方法使用相同的变量pikaHP
。第一种方法在减去和打印pikaHP
的值时工作正常,但是当我在那之后立即转到下一个方法时,该值已重置为其原始值。
以下是一些代码:
int pikaHP = 30;
static void fight(int pikaHP, /*(insert other variables here)*/)
{
pikaHP = pikaHP - 5; //outputs 25 fine on the next line
System.out.println("Pikachu's hp is " + pikaHP);
}
static void currentHP(int pikaHP /*(inster other variables here)*/)
{
//This time pikaHP is printed as 30
System.out.println("pikachu's hp is " + pikaHP);
}
我猜这种情况正在发生,因为pikaHP
方法中main
设置为30,而且这两种方法都只获取了30的数量。
如何在pikaHP
方法中将fight()
保存为25(或我想要的任何值),然后将该值保存到currentHP()
方法,以便输出"皮卡丘& #39; s hp是25"而不是30?
答案 0 :(得分:1)
方法只能在本地更改传递给它的变量的值(例如pikaHP
),因为Java是一种按值传递的语言。您希望更改在方法调用中继续存在,使变量保持静态而不是将其传递给这些静态方法。
另一种方法(如果在main方法中本地声明此变量并且您希望保持这种方式)是每个将此变量作为参数获取并希望更改其值的方法将返回该变量的修改值,并且您的main方法会将新值赋给变量。