把class Sc和class Ar放到主类外代码就是正确的,我想放在里面应该改那些,原理是什么??谁告诉下我public class Zy3 {
    String name;
    int sala, book;
    public Zy3(String qwer, int qwe) {
        name = qwer;
        book = qwe;
    }    public void cal() {
        sala = book * 2;
    }    public void print() {
        System.out.println(name + sala);
    }    public static void main(String[] args) {
        Zy3 ys = new Zy3("艺术", 20);
        Zy3 kx = new Zy3("科学", 15);
        Sc sc = new Sc();
        Ar ar = new Ar();
        sc.mmm(ys);
        ar.mm(kx);
    }
    class Sc {
        public void mmm(Zy3 qwe) {
            qwe.cal();
            qwe.print();
        }
    }
    
    
    class Ar {
        public void mm(Zy3 qwe) {
             qwe.cal();
             qwe.print();
         }
    }}

解决方案 »

  1.   

    可是我这不存在包的问题啊都是在一个JAVA文件里的代码
      

  2.   

    public static void main(String[] args) {
            Zy3 ys = new Zy3("艺术", 20);
            Zy3 kx = new Zy3("科学", 15);
            Sc sc = ys.new Sc();
            Ar ar = kx.new Ar();
            sc.mmm(ys);
            ar.mm(kx);
        }
    原因在于Sc是类Zy3的内部类,它不能在静态方法中直接实例化,必须通过外部类的实例来实例化化.