Java,非静态不能引用静态上下文

Java, non-static cannot be reference to static context

在 UNI atm 上 Java 课程,我在骰子问题上遇到了一些麻烦。

我有以下内容:

 public class Die {
   public int eyes;
   private java.util.Random r;
   private int n;

   public Die (int n) {
     r = new Random();
     this.n = n;
   }

   public void roll() {
     eyes = r.nextInt(Die.n);
   }

编译时我得到:无法从静态上下文中引用非静态变量 n。我将如何解决这个问题,同时让它从用户给定的值中随机化?

移除

Die.n

并将其更改为简单的

n

如果 n 被声明为 static,您可以使用这两种表示法,即使第一个表示法是多余的(因为您来自包含 class 的内部)

n 不是静态变量,因此您不能以静态方式引用它 (Die.n)。

由于在Dieclass中是一个实例变量,而你在Dieclass中引用它,你可以直接使用[=10] =] 而不是 Die.n.