你的new A()里面是不是调用了什么不是static的东西?这个exception从你贴的程序中看不出来

解决方案 »

  1.   

    是不是你的A是main所在的这个类的一个内部方法,如果是的,你把 class A 改成static class A就可以了。
      

  2.   

    楼上的说得可能不对吧?
    main里面的类不一定要是static的哦。
      

  3.   

    你自己实验一下就可以了:
        public class Test{
    class name{
    void print(){System.out.println("Test");}
    }
    public static void main(String[] args)
    {
    name n=new name();
    n.print();
    }
    }
    这个程序产生的错误与他的程序产生了同样的错误。
    而加上static 后却是正确的
      

  4.   

    严重同意 CNSC(王) 的说法!!
      

  5.   

    严重同意 CNSC(王) 的说法!!
      

  6.   

    public class Test{
    class name{
    void print(){System.out.println("Test");}
    }
    public static void main(String[] args)
    {
    name n=new name();
    n.print();
    }
    }
    如果用这种方式(类中其它类作成员)
    name n=new name();只实例化了n,但n中的name只是一个类型,还是个空值。最好声明一个name类型的变量,再实例化它。进行调用
      

  7.   

    main方法是static的,他所调用的方法,变量也必须是static的。
    main方法是程序运行的入口,这时类的对象还没有实例化,所以必须是static的,无需实例化就可以运行。
      

  8.   

    如果不把内部类声明为 static
    应该向如下把它new出来:public class T{
    int t1 = 0;
    public class A{
    int i = 0;
    }

    public static void main(String args[]){
    T t = new T();
    A a = t.new A(); // 这行
    a.i = 10;
    System.out.println(a.i);
    }
    }
      

  9.   

    就在贴出这个贴之后半小时,小弟突然茅塞顿开,自己解决了问题。终于理解到了这其中的原由.但还是衷心谢谢大家的帮助!!!把分给了cnsc(王).其他关心这个贴的朋友对不起了.