import java.util.Scanner;
/*
创建5个学生对象,并赋给一个学生数组。每个学生有以下属性。学号,姓名,年龄,请安顺序实现以下任务
任务1 :将学生按学号排序输出
2 给所有学生年龄加1
3 在实现子任务2 的基础上统计大于20岁的学生人数
*/
class Student{
private int num;
private String name;
private int age;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//输出信息
public void show() {
System.out.println("num:"+ num);
System.out.println("name:" + name);
System.out.println("age:" + age);
System.out.println();
}
}
public class demo4 {
public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
Student [] students = new Student[5]; ///创建学生数组
Student temp = new Student(); //排序要用到临时对象
int count = 0;
int previous =0,present =0;;
//输入5个学生的信息
///因为他不需要所有的属性在都在一个数组中 这就可以不用集合 但是总会用的到
//所以我们就可以创建三个数组
//get方法取值 set方法:赋值
for (int i = 0; i < 5; ++i) {
students[i] = new Student(); //每一个对象都需要实例化
System.out.println("请输入学生学号" + (i+1) + "的ID:");
students[i].setNum(sr.nextInt());
sr.nextLine(); //接受回车 nextLine()方法的结束符只是Enter键
System.out.println("请输入学生的"+ (i+1) + "的姓名:");
students[i].setName(sr.nextLine());
System.out.println("请输入学生的"+ (i+1) + "的年龄");
students[i].setAge(sr.nextInt());
//输入的同时直接冒泡排序
/* for (int j = 0; j < students.length-1; j++) {
for (int k = j+1; k < students.length; k++) {
// if(students[j2].getNum()>students[j2].getNum()) {
if(students[j].getNum()>(students[k].getNum())) {
temp = students[j];
students[j]= students[k];
students[k] = temp;
}
}}}
*/
//输入时使用插入法排序
present =i;
previous = i-1;
while (previous >= 0 && students[present].getNum()<students[previous].getNum()) {
temp = students[present];
students[present] = students[previous];
students[previous] = temp;
--present;
--previous;
}
}
for (int i1 = 0; i1 < 5; ++i1) {
students[i1].show(); //调用show 方法输出学生排序后的信息
//下面使年龄加1
students[i1].setAge(students[i1].getAge()+1);
//统计年龄大于20岁学生的人
if (students[i1].getAge()>20) {
++count;
}
}
System.out.println("年龄加1后大于20岁的人有"+count+"人");
}
}