910631286 发表于 2020-5-19 20:13:53

对象数组的题目

本帖最后由 910631286 于 2020-5-19 20:28 编辑

package demo1;
public class StudentText {
        public static void main(String[] args) {
                Student[] stus=new Student;
                for (int i = 0; i < stus.length; i++) {
                        stus = new Student();
                        stus.number=(i+1);
                }
        }
        class Student{
                int number;
                int state;
                int score;
        }

}
为什么这一行会报错stus = new Student();

910631286 发表于 2020-5-19 20:16:19

报错为No enclosing instance of type StudentText is accessible. Must qualify the allocation with an enclosing instance of type StudentText (e.g. x.new A() where x is an instance of
StudentText).

qiuyouzhi 发表于 2020-5-19 20:17:18

是不是上面的public少了个p的原因?你补上试试

910631286 发表于 2020-5-19 20:30:20

qiuyouzhi 发表于 2020-5-19 20:17
是不是上面的public少了个p的原因?你补上试试

这个是我复制的时候不小心删的,加上也是报错

dq756620245 发表于 2020-5-20 10:06:40

本帖最后由 dq756620245 于 2020-5-20 10:09 编辑

{:10_257:}请楼主了解一下Java内部类的正确实例化方式,你先要StudentText studentText = new StudentText();然后StudentText.Student stus = studentText.new Student();

最优解偏执狂 发表于 2020-5-20 11:12:44

main方法是静态的,而Student内部类是动态的,你把Student类加上static修饰就可以了。
如果你不想加static修饰可以先new一个StudentText对象出来,再通过这个对象把内部类的对象new出来
public class StudentText{
      public static void main(String[] args) {
              Student[] stus=new Student;
              StudentText t= new StudentText();
                for (int i = 0; i < stus.length; i++) {
                        stus = t.new Student();
                        stus.number=(i+1);
                }
      }
         class Student{
                int number;
                int state;
                int score;
      }
}
页: [1]
查看完整版本: 对象数组的题目