public class CName{
  class Cell
{
int key;
Cell link;
}
  public static void main(String[] args){
         int num=15;
Cell[] cell=new Cell[num];
Random ran=new Random();

for(int i=0;i<num;i++){
cell[i]=new Cell();//此处报错:无法从静态上下文引用非静态
cell[i].key=ran.nextInt(num);
}
  }
}

解决方案 »

  1.   

    你这代码 写的不对啊,class 要和别的class并列啊public class CName
    {    public static void main(String[] args)
        {
            int num = 15;
            Cell[] cell = new Cell[num];
            Random ran = new Random();        for (int i = 0; i < num; i++)
            {
                cell[i] = new Cell();//此处报错:无法从静态上下文引用非静态
                cell[i].key = ran.nextInt(num);
            }
        }
    }class Cell
    {
        int key;    Cell link;
    }
      

  2.   

    内部类可以加上static这样在静态方法中就可以实例化了。
      

  3.   

    谁说class要和class并列啊,别人是内部类
    外部类的静态方法(main方法)不能访问非静态内部类,包括不能使用非静态内部类定义变量,创建实例等
      

  4.   

    这样来做是不是好点?import java.util.*;class Cell{ 
    int key; 
    Cell link; 
    } public class CName{ 
    private static Cell[] cell;
    private static Random ran;
      
    public static void main(String[] args){ 
            int num = 15;         cell = new Cell[num]; 
            ran = new Random();         for(int i=0;i <num;i++){ 
             cell[i] = new Cell();
             cell[i].key = ran.nextInt(num); 
            } 

    }或者你要申明成内部类,那么就要这样:
    import java.util.*;public class CName{ 
    private static Cell[] cell;
    private static Random ran;

    static class Cell{ 
    int key; 
    Cell link; 

      
    public static void main(String[] args){ 
            int num = 15;         cell = new Cell[num]; 
            ran = new Random();         for(int i=0;i <num;i++){ 
             cell[i] = new Cell();
             cell[i].key = ran.nextInt(num); 
            } 

    }