[英]How do you pass an updated global class variable from one method into another?
我在一个方法中更新了变量(在类中是全局变量),但似乎无法将更新后的变量传递给另一个方法。 任何帮助,将不胜感激,谢谢。 这是我缩短的代码:
public class Game{
private int randomIndexX;
protected String spawn(){
randomIndexX = randomGenerator.nextInt(10);
return null;
}
protected String test(){
System.out.println(this.randomIndexX);
return null;
}
}
public class Player extends Game{
protected String getNextAction(String command) {
switch(command){
case "test":
test();
break;
}
}
}
public static void main(String[] args) {
Game game = new Game();
Player player = new Player();
game.spawn();
player.getInputFromConsole();
}
编辑:因此,当我从Player类调用test()时,我希望它打印出randomIndexX,但即使在test()方法中使用this.randomIndexX,它仍似乎无法正常工作
我可以看到的第一个问题是您没有构造函数。(可选)(如果不创建,则编译器将生成所谓的“默认”构造函数,该构造函数没有任何参数。通常是好的做法显式创建类构造函数。
我可以看到的第二个问题是您缺少尾括号。 修复如下所示。
public class Game
{
private int randomIndexX;
protected String spawn()
{
randomIndexX = 0;
return null;
}
protected String test()
{
System.out.println(randomIndexX);
return null;
}
}
您可以构造它并触发所需的任何方法:
Game game = new Game();
game.spawn();
game.test()
编辑:因此,当我从Player类调用test()时,我希望它打印出randomIndexX,但即使在test()方法中使用this.randomIndexX,它仍似乎无法正常工作。
因此,test()是实例方法,这意味着您必须制作Class Game的实例才能调用该方法,您的randomIndexX是实例成员,因此您需要仔细考虑您想做的事情,如果randomIndexX对于所有Game类的对象,应将其声明为static,如下所示:
private static in randomIndexX;
因为它的值不会根据对象实例而改变。
因此,为了从类外部访问该变量(因为它是私有的),您需要声明一个公共方法来检索该值(getter或也称为访问器):
public static int getRandomIndex(){
return randomIndexX;
}
因此,在主要情况下,您甚至不必制作Game类的实例来访问randomIndexX中保存的值,只需调用getter方法,如下所示:
System.out.println(Game.getRandomIndex());
上面的行将在控制台上显示0,因为0是int类型成员的默认值,现在,如果您希望能够对其进行更改,则只需在Game类中设置setter或mutator方法即可:
public static void setRandomIndex(int n){
randomIndexX = n;
}
现在,您可以在Game类之外设置和检索“ randomIndexX”字段。
例如,下面的代码将把randomIndexX的值设置为5,然后在控制台中打印它:
Game.setRandomIndex(5);
System.out.println(Game.getRandomIndex());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.