This question already has answers here:
Non-static variable cannot be referenced from a static context
(12个答案)
4年前关闭。
我正在尝试从类
这是代码:
可变停留位于类
类
(12个答案)
4年前关闭。
我正在尝试从类
stay
中访问布尔变量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;
}
}
可变停留位于类
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中,则可以使用use this.stay
来代替MontyHall.stay
来使用它。如果上面列出的方法不在MontyHall类之内,那么您将需要创建一个新的MontyHall对象,例如:MontyHall montyHall = new MontyHall();
另外,您可能希望将stay
变量设为静态,在这种情况下,只需将简单的static
关键字添加到变量声明中即可。
08-18 19:49