我在一个方法中更新了一个变量(在类中是全局的),然后我似乎无法将该更新的变量传递给另一个方法。 任何帮助将不胜感激,谢谢。 这是我缩短的代码:
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,它似乎仍然不起作用
答案 0 :(得分:0)
我能看到的第一个问题是你没有构造函数。(可选) (如果你不做一个,那么编译器会生成所谓的"默认"构造函数,它是一个没有任何参数的构造函数。通常很好的做法是显式创建一个类构造函数。
我能看到的第二个问题是你错过了结束括号。 修复如下所示。
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()
答案 1 :(得分:0)
编辑:所以当我从Player类调用test()时,我希望它打印出randomIndexX,但是在方法test()中,即使使用this.randomIndexX,它似乎仍然没有工作。
所以test()是实例方法,这意味着你必须创建一个Class Game实例才能调用该方法,randomIndexX是实例成员所以你需要好好想想你想做什么,如下randomIndexX对于Game类的所有对象都很常见,你应该将它声明为静态,如:
private static in randomIndexX;
因为它的值不会因对象实例而改变。
因此,为了从类外部访问该变量,因为它是私有的,你声明一个公共方法来检索该值(getter或者也称为访问器):
public static int getRandomIndex(){
return randomIndexX;
}
因此,在main中,你甚至不必创建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());