Java,非静态无法引用静态上下文

时间:2015-09-15 20:50:42

标签: java static non-static

在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不能从静态上下文中引用。我如何解决这个问题,同时从用户给定的值中随机化?

2 个答案:

答案 0 :(得分:3)

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

由于它是Die类中的实例变量,并且您在Die类中引用它,因此您可以使用n代替Die.n

答案 1 :(得分:1)

删除

Die.n

并将其更改为

n

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