代码可用,详细注释
* 定义类Student、包含三个属性:学号number(int),年级state(int、成绩score(int)
* 创建20个学生对象,学号为1到20,年级(小学)和成绩(百以内)都有随机数确定
* 问题一:打印出三年级(state值为3)的学生信息
* 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
* 提示:
* 1)生成随机数:Math.random(),返回值类型Double
* 2)四舍五入取整数:Math.round(double d),返回值类型long
此代码是对StudentTest.java的改进优化,将操作数组的功能封装到方法中
public class StudentTest2 {
public static void main(String[] args) {
//声明Student类型的数组
Student2[] stus = new Student2[20];
for(int i = 0;i <stus.length;i++) {
//给数组元素赋值
stus[i] = new Student2();
//给Student对象的属性赋值
stus[i].number = i + 1;
//年级赋值,随机数为double类型,state为int类型,强转就直接四舍五入,不需要定义
stus[i].state = (int)(Math.random() * (6-1+1)+ 1);
// 成绩赋值【0,100】
stus[i].score = (int)(Math.random() * (100-0+1)+ 1);
}
StudentTest2 test = new StudentTest2();
//遍历学生数组
test.print(stus);
//打印三年级学生信息
test.searchState(stus, 3);
//冒泡排序
test.sort(stus);//方法中只定义了排序,没输出
test.print(stus);
}
//遍历Student[]数组的操作
public void print(Student2[] stus) {
for(int i = 0;i < stus.length;i++) {
System.out.println(stus[i].info());//调用方法直接输出信息
}
}
//查找Student数组中指定年级的学生信息
public void searchState(Student2[] stus,int state) {//形参定义年级
System.out.println("三年级学生的信息:");
for(int i = 0;i < stus.length;i++) {
if(stus[i].state == 3) {
System.out.println(stus[i].info());
}
}
}
//使用冒泡排序按学生成绩排序,并遍历所有学生信息
public void sort(Student2[] stus) {
System.out.println("按成绩排序,所有学生信息如下:");
for(int i = 0;i < stus.length - 1;i++) {
for(int j = 0;j < stus.length - 1 - i;j++) {
if(stus[j].score >stus[j + 1].score) {
//如果需要换序,交换的是数组的元素:Student对象
Student2 temp = stus[j];
stus[j] = stus[j + 1];
stus[j + 1] = temp;
}
}
}
}
}
class Student2{
int number;//学号
int state;//年级
int score;//成绩
public String info(){//将输出方式定义为方法,输出时直接调用方法
return "学号:" + number + ",年级:" + state + ",成绩为" + score;
}
}