package day09Text;
/*对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。
创建20个学生对象,学号为1到20 ,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1) 生成随机数:Math.random(),返回值类型double;
2) 四舍五入取整:Math.round(double d),返回值类型long。
练习3
5.声明一个日期类型MyDate:有属性:年year,月month,日day。创建2个日期
对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。*/
public class StudentText1 {
public static void main(String[] args) {
Student1[] s1 = new Student1[20];
for (int i = 0; i < s1.length; i++) {
s1[i] = new Student1();//s1[]new对象,因为20个都要new成新对象,所以使用循环
//学号
s1[i].number = (i + 1);
//年级[1;6]
s1[i].state = (int)(Math.random() * 6 + 1 );
//分数[0;100]
s1[i].score = (int)(Math.random() * 100 + 1);
}
//遍历
for (int i = 0; i < s1.length; i++) {
System.out.println("学号:" + s1[i].number + "年级" + s1[i].state + "分数" + s1[i].score);
}
System.out.println();
//问题一:打印出3年级(state值为3)的学生信息。
for (int i = 0; i < s1.length; i++) {
if (s1[i].state == 3) {
System.out.println("学号:" + s1[i].number + "年级" + s1[i].state + "分数" + s1[i].score);
}
}
System.out.println();
//问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
for (int i = 0; i < s1.length - 1; i++) {
for (int j = 0; j < s1.length - i -1; j++) {
if (s1[j].score > s1[j + 1].score) {
Student1 num = s1[j];
s1[j] = s1[j + 1];
s1[j + 1] = num;
}
}
}
//遍历
/*for (int i = 0; i < s1.length; i++) {
System.out.println("学号:" + s1[i].number + "年级" + s1[i].state + "分数" + s1[i].score);
}
System.out.println();*/
//使用方法遍历
for (int i = 0; i < s1.length; i++) {
/* String news1= s1[i].info();//当存在return返回值时,一定要创建的类要与方法的类一致
System.out.println(news1);*/
System.out.println(s1[i].info());//或者使用嵌套
}
}
}
class Student1 {
int number;//学号
int state;//年级
int score;//成绩
//显示学生信息的方法
public String info(){
return "学号:" + number + ",年级:" + state + ",成绩:" + score;
}
}
下面是将一些过程封装到方法中****************************************
public class StudentText2 {
public static void main(String[] args) {
Student2[] s1 = new Student2[20];
for (int i = 0; i < s1.length; i++) {
s1[i] = new Student2();//s1[]new对象,因为20个都要new成新对象,所以使用循环
//学号
s1[i].number = (i + 1);
//年级[1;6]
s1[i].state = (int)(Math.random() * 6 + 1 );
//分数[0;100]
s1[i].score = (int)(Math.random() * 100 + 1);
}
Student2 s2 = new Student2();
//遍历用方法
s2.info(s1);
//问题一:打印出3年级(state值为3)的学生信息。使用方法
System.out.println();
s2.information(s1, 3);
//问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
for (int i = 0; i < s1.length - 1; i++) {
for (int j = 0; j < s1.length - i -1; j++) {
if (s1[j].score > s1[j + 1].score) {
Student2 num = s1[j];
s1[j] = s1[j + 1];
s1[j + 1] = num;
}
}
}
//遍历
/*for (int i = 0; i < s1.length; i++) {
System.out.println("学号:" + s1[i].number + "年级" + s1[i].state + "分数" + s1[i].score);
}
System.out.println();*/
//使用方法遍历
s2.info(s1);
}
}
class Student2 {
int number;//学号
int state;//年级
int score;//成绩
//显示学生信息的方法
public void info(Student2[] s1){
for (int i = 0; i < s1.length; i++) {
System.out.println("学号:" + s1[i].number + "年级" + s1[i].state + "分数" + s1[i].score);
}
}
//打印出3年级(state值为3)的学生信息。
public void information(Student2[] s1,int state){
for (int i = 0; i < s1.length; i++) {
if (s1[i].state == state) {
System.out.println(s1[i].a1()); //方法中套方法
}
}
System.out.println();
}
//显示学生信息的方法
public String a1(){
return "学号:" + number + "年级" + state + "分数" + score;
}
}