首页 新闻 会员 周边 捐助

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

0
[已解决问题] 解决于 2021-07-15 14:48

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());
			}
		}
	}
}

}

学习编程的小强的主页 学习编程的小强 | 菜鸟二级 | 园豆:202
提问于:2021-07-14 17:55
< >
分享
最佳答案
0

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

奖励园豆:5
编程小大白 | 小虾三级 |园豆:530 | 2021-07-15 08:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册