gpt4 book ai didi

java - 从静态上下文访问非静态变量

转载 作者:行者123 更新时间:2023-12-01 10:29:30 24 4
gpt4 key购买 nike

我正在尝试访问 boolean 变量 stay来 self 的类(class)MontyHall但不能,因为它是非静态的,并且我试图在静态上下文中访问它这是代码:

public void updateStatistics(Door door1, Door door2, Door door3)
{
this.numGames = this.numGames + 1;
oneDoor(door1, 0);
oneDoor(door2, 1);
oneDoor(door3, 2);

if (MontyHall.stay == true){
this.numStay = this.numStay + 1;
}
else{
this.numSwitch = this.numSwitch + 1;
}
}

变量stay位于MontyHall类中。任何帮助将不胜感激,因为我很困惑如何解决这个问题类的属性MontyHall :

public class MontyHall {
boolean stay;
Door A = new Door("A");
Door B = new Door("B");
Door C = new Door("C");

public MontyHall(Door a, Door b, Door c){
this.A = a;
this.B = b;
this.C = c;
}}

最佳答案

您的代码 MontyHall.stay 是您尝试静态引用它的部分(通过使用类名)。

非静态字段需要实例化对象才能引用。在这种情况下,如果此方法位于 MontyHall 内,则您可以使用 this.stay 来访问它,而不是使用 MontyHall.stay。如果上面列出的方法不在 MontyHall 类中,那么您将需要创建一个新的 MontyHall 对象,如下所示: MontyHall montyHall = new MontyHall();

或者,您可能希望使stay 变量保持静态,在这种情况下,只需在变量声明中添加一个简单的static 关键字即可。

关于java - 从静态上下文访问非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166313/

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