1.以下是原过程
/*
* 4. 对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1) 生成随机数:Math.random(),返回值类型double; //[0,1)
2) 四舍五入取整:Math.round(double d),返回值类型long。
* */
public class Test3 {
public static void main(String[] args) {
Student student[]=new Student[20];
for(int i=0;i<student.length;i++) {
student[i]=new Student(); //还要给每个学生定义为Student类才能具有Student的属性,不然初始值为null。
student[i].number=i+1;
student[i].state=(int)(Math.random()*(6-1+1)+1);
student[i].score=(int)(Math.random()*(100-0)+1);
}
//打印出3年级(state值为3)的学生信息
for(int i=0;i<student.length;i++) {
if(student[i].state==3) {
System.out.print(student[i].number+"\t");
System.out.print(student[i].state+"\t");
System.out.print(student[i].score);
System.out.println();
}
}
System.out.println("*************************************");
//使用冒泡排序按学生成绩排序,并遍历所有学生信息
for(int i=0;i<student.length-1;i++) {
for(int j=0;j<student.length-1-i;j++) {
if(student[j].score>student[j+1].score) {
Student temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
}
}
for(int i=0;i<student.length;i++) {
System.out.print(student[i].number+"\t");
System.out.print(student[i].state+"\t");
System.out.print(student[i].score);
System.out.println();
}
}
}
class Student{
int number;
int state;
int score;
}
2.接下来是将操作数组的功能封装到方法中
/*
* 4. 对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
*/
//此代码是对Test3.java的改进:将操作数组的功能封装到方法中
public class Test3_fengzhuang {
public static void main(String[] args) {
Student1 student[]=new Student1[20];
Test3_fengzhuang test = new Test3_fengzhuang(); //造一个Test3_fengzhuang这样的类的对象,才能进行对方法以及方法中功能的调用
//打印出3年级(state值为3)的学生信息
test.info(student);
test.searchState(student, 3);
System.out.println("*************************************");
//使用冒泡排序按学生成绩排序,并遍历所有学生信息
test.sort(student);
test.print(student);
}
//给每个学生赋初值
public void info(Student1 student[]) {
for(int i=0;i<student.length;i++) {
student[i]=new Student1(); //还要给每个学生定义为Student类才能具有Student的属性,不然初始值为null。
student[i].number=i+1;
student[i].state=(int)(Math.random()*(6-1+1)+1);
student[i].score=(int)(Math.random()*(100-0)+1);
}
}
//查找并输出Student1数组中指定年级的学生信息
public void searchState(Student1 student[], int state) {
for(int i=0;i<student.length;i++) {
if(student[i].state==state) {
System.out.print("学号为:"+student[i].number+"\t");
System.out.print("年级为:"+student[i].state+"\t");
System.out.print("成绩为:"+student[i].score);
System.out.println();
}
}
}
//遍历并输出数组Student1的操作
public void print(Student1 student[]) {
for(int i=0;i<student.length;i++) {
System.out.print("学号为:"+student[i].number+"\t");
System.out.print("年级为:"+student[i].state+"\t");
System.out.print("成绩为:"+student[i].score);
System.out.println();
}
}
//用冒泡排序算法对数组Student1按照由成绩从高到低进行排序
public void sort(Student1 student[]) {
for(int i=0;i<student.length-1;i++) {
for(int j=0;j<student.length-1-i;j++) {
if(student[j].score>student[j+1].score) {
Student1 temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
}
}
}
}
class Student1{
int number;
int state;
int score;
}
总结:
1.在一个类中,main只是个方法,和封装了其他功能的方法是并列的。
2.在一个类中,与main并列的方法要注意形式参数的命名。
3..在一个类中,如果要调用这个类或者其他类的方法或属性,用重新用被调用的类来定义一个新的属性才能调用需要调用的类。