数组存储对象并输出


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+"人");	
		}
	}

猜你喜欢

转载自blog.csdn.net/qq_45760909/article/details/108502150