import java.util.*;
class TryRandom
{ Random rand=new Random();
 public static void main(String [] args)
  { int [] a;
    int i=rand.nextInt(20);
    System.out.println("i is:"+i);
    a=new int[i];
    System.out.println("length of a = " + a.length);


报错是:TryRandom.java:6: 无法从静态上下文中引用非静态 变量 rand
    int i=rand.nextInt(20);
我想问的是:1,“int i=rand.nextInt(20);”怎么成了静态上下文了?
          2,我在“Random rand=new Random();”前加了static后就没事了,这又怎么解释?我知道这儿的根本原因是int i=rand.nextInt(20);为静态上下文。
 请大家帮俺看看……
 小弟感激不尽

解决方案 »

  1.   

    你的int i=rand.nextInt(20);
    是在main方法里的而main方法本来是静态的
    所以int i=rand.nextInt(20);实在静态调用的静态方法只可以调用静态变量
      

  2.   

    import java.util.*;
    class TryRandom
    { Random rand=new Random();
     public static void main(String [] args)
      { int [] a;
        int i=new TryRandom().rand.nextInt(20);
        System.out.println("i is:"+i);
        a=new int[i];
        System.out.println("length of a = " + a.length);
      }
    }
      

  3.   

    只要把代码改成如下就可以了的;
    import java.util.*;
    class TryRandom

     public static void main(String [] args)
      { 
        Random rand = new Random();
        int [] a;
        int i = rand.nextInt(20);
        System.out.println("i is:"+i);
        a=new int[i];
        System.out.println("length of a = " + a.length);

    }静态函数中不能使用非静态属性和方法,因为它们没有this引用;
      

  4.   

    全是基础  
    静态方法不能引用变量  你的RAND  是个变量