题目要求:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int),创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生的成绩排序,并遍历所有学生信息。
提示:
1)随机生成数:Math.random(),返回值类型为double;
2)四舍五入取整:Math.round(double d),返回值类型long.
代码:
public class ArraysMethod {
public static void main(String[] args) {
// Student p1=new Student();
// p1.number=1;
// p1.score=(int)(Math.random()*100+1);
// p1.state=(int)(Math.random()*3+1);//太过于麻烦
Student[] stus=new Student[20];//类可以创建该类型的数组
int n=1;
for(int i=0;i<stus.length;i++)
{
stus[i]=new Student();//先创建对象
stus[i].number=n;
stus[i].score=(int)(Math.random()*100+1);//[1,101)默认返回值double类型
stus[i].state=(int)(Math.random()*3+1);//[1,4)
n++;
}
//打印出年级为三的学生的信息
System.out.println("打印出年级为三的学生信息");
System.out.println("学号"+"\t"+"成绩"+"\t"+"年级");
for(int i=0;i<stus.length;i++)
{
if(stus[i].state==3)
{
System.out.println(stus[i].number+"\t "+stus[i].score+" \t"
+stus[i].state);
}
}
//使用冒泡
System.out.println("使用冒泡排序学生成绩降序:");
System.out.println("学号"+"\t"+"成绩"+"\t"+"年级");
for(int i=0;i<stus.length-1;i++)
{
for(int j=0;j<stus.length-1-i;j++)
{
int temp;
if(stus[j].score<stus[j+1].score)
{
temp=stus[j].score;
stus[j].score=stus[j+1].score;
stus[j+1].score=temp;
}
}
}
for(int i=0;i<stus.length;i++)
{
System.out.println(stus[i].number+"\t"+stus[i].score+" \t"
+stus[i].state);
}
}
}
class Student{
//属性
int number;
int state;
int score;
}
运行结果:
打印出年级为三的学生信息
学号 成绩 年级
6 44 3
8 79 3
9 2 3
11 50 3
13 98 3
16 22 3
20 48 3
使用冒泡排序学生成绩降序:
学号 成绩 年级
1 98 1
2 88 2
3 87 1
4 79 1
5 77 2
6 76 3
7 75 2
8 67 3
9 57 3
10 50 1
11 48 3
12 44 1
13 40 3
14 36 1
15 31 2
16 30 3
17 22 2
18 14 1
19 3 2
20 2 3