gpt4 book ai didi

java - 在 Java 中设置另一个类的变量值

转载 作者:行者123 更新时间:2023-12-02 05:41:55 25 4
gpt4 key购买 nike

我想知道是否可以重置另一个类的变量值。例如,我在 HillClimber (hc) 类中有这个变量:

    public int ballWeight = 200;

我想做的是用这个值来运行一个游戏的模拟。完成后,我想将另一个类的值设置为 201 并再次开始模拟,然后增加到 202 并开始另一个类,依此类推。我的问题是,每次重新启动模拟时,ballWeight 变量都会重置为 200。我尝试在 HillClimber 类中使用 setter 方法:

    public int setBallWeight(int ballWeight) {
return this.ballWeight = ballWeight;
}

并在模拟结束时从另一个类调用它:

    hc.setBallWeight(hc.ballWeight+1);

但这似乎不起作用,因为变量存储的值没有改变。有谁知道我该如何做到这一点,以便每次模拟结束时 ballWeight 的存储值都会增加 1?或者这有可能吗?谢谢。

最佳答案

通常在POJO中对象的每个变量都有所谓的 getter 和 setter 方法。对于您的情况:

public class HillClimber{
private int ballWeight;

public HillClimber(){
this.ballWeight = 200;
}

public void setBallWeight(int ballWeight){
this.ballWeight = ballWeight;
}

public int getBallWeight(){
return this.ballWeight;
}
}

这样你就可以通过get和set方法访问变量ballWeight。您不能像 hc.ballWeight 那样直接访问它,这是可能的,但这是一种不好的做法,并防止此访问类型将您的变量声明为私有(private)(意味着只有声明它的类可以直接访问)。

为了满足您在每次运行游戏时添加一个的请求,您可以调用

hc.setBallWeight(++hc.getBallWeight()); //Equivalent to hc.setBallWeight(hc.getBallWeight() + 1);

如果类不是自动生成的(如在 Hibernate 上下文中),我通常不会使用此方法,而是在 HillClimber 类中声明另一个方法

public void incrementBallWeight(int ballWeightToAdd){
this.ballWeight += ballweiGhtToAdd; //Equivalent to this.ballWeight = this.ballWeight + ballweiGhtToAdd;
}

或者如果我总是需要只向变量添加一个

public void incrementBallWeight(){
this.ballWeight++;
}

然后只需在每次游戏运行后调用 incrementBallWeight 即可。

注意:要使其正常工作,您必须始终使用相同的 HillClimber 实例。在你的主要

public class Game{
private HillClimber hc = new HillClimber(); //Create the instance and sets ballWeight to 200
public static void main(String[] args){
playGame();
hc.incrementBallWeight(); //ballWeight == 201

playAnotherGame()
hc.incrementBallWeight(); //ballWeight == 202 -> Always the same instance of HillClimber (hc)
.
.
.

}
}
<小时/>

编辑

我认为你的问题比这更严重。您要求在不使用永久存储的情况下保存变量的状态(这意味着如果您关闭并打开电脑,该值也应该可用)。这是根本不可能实现的。

你应该重新考虑你的程序(我的意思是java程序,而不是“游戏运行”),以便在每次游戏运行后都不会停止。您可以通过不同的方式执行此操作:通过 Swing GUI ,通过来自 stdin 的用户输入等等。如果您需要有关此主题的帮助,我们需要了解更多您的代码(也许最好提供全部代码)。

或者您可以使用文件来存储您的值,即 is not as difficult as you think 。 (Also)。

关于java - 在 Java 中设置另一个类的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com