炫意html5
最早CSS3和HTML5移动技术网站之一

为什么把Student类中的最后两个方法写出来,第5行代码std[i] = new Student();会报错?

public class StudentTest2 {
public static void main(String[] args) {
//创建20个学生对象:
Student[] std = new Student[20];
for(int i = 0;i < std.length;i++) {
std[i] = new Student();
//学号为1~20:
std[i].number = (i+1);
//年级Math.random[0.0 1.0)6–>[0.0 6.0)–>(int)[0 6)+1–>[1 6]
std[i].state = (int)(Math.random()
6) + 1;
//成绩[0 100]
std[i].score = (int)(Math.random()*100) + 1;
}

}

//定义类Student:
class Student{
//包含三个属性:
int number;//学号
int state;//年级
int score;//成绩

//遍历学生属性信息方法:
public String info() {
return "学号:"+number+"\t"+"年级:"+state+"\t"+"成绩:"+score;
}
//遍历20个学生的属性信息:
public void arrayergo(Student[] std) {
for(int i = 0;i < std.length;i++){
System.out.println(std[i].info());
}
}
//问题一:打印出3年级(state值为3)的学生信息:
public void statefind(Student[] std,int state) {
for(int i = 0;i < std.length;i++) {
if(std[i].state==state) {
System.out.println(std[i].info());
}
}
}
}

}

回答

main方法是static静态方法,Student是一个非静态的内部类,只能被StudentTest2的非静态方法访问。有两种解决方法:1、在class前面加上static设置为静态内部类;2、把Student类移出来单独作为一个类

炫意HTML5 » 为什么把Student类中的最后两个方法写出来,第5行代码std[i] = new Student();会报错?

Java基础教程Android基础教程