练习题:将数据封装为对象并保存到文件中

需求:控制台输入学生信息,将学生信息封装为Student对象,将Student对象保存到TreeSet和按照年龄大到小排序,将排序结果反转后输出到student.txt(不需要序列化)

思路:
创建学生类
创建测试类
封装输入数据为对象
将对象添加到TreeSet集合
反转排序结果
将学生信息写入到Student.txt
一、创建Student类

public class Student implements Comparable<Student>{

	private Integer id;
	private String name;
	private Integer age;
	
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public int compareTo(Student o) {
		//大到小
		return o.age-this.age;
	}

	public Student(Integer id, String name, Integer age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}


	public Student() {
		super();
		 
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	

}

二、创建StudentTest类

public class StudentTest {

	//创建Scanner对象
	static Scanner input=new Scanner(System.in);
	/****
	 * 定义方法完成学生信息输入,将输入信息封装为Student对象
	 */
	public static Student inputStudent() {
		
		System.out.println("请输入学生ID:");
		int id=input.nextInt();
		
		System.out.println("请输入学生姓名:");
		String name=input.next();
		
		System.out.println("请输入学生年龄:");
		int age=input.nextInt();
		//将输入信息封装为学生对象
		Student s=new Student(id,name,age);
		
		return s;
	}
	
	/****
	 * 控制学生信息的输入数量,将多个学生对象保存到TreeSet集合
	 * @param args
	 */
	public static TreeSet<Student> inputBatchStudent(){
		//创建TreeSet对象
		TreeSet<Student> stus=
			new TreeSet<Student>(Collections.reverseOrder());
		while(true) {
			//获得学生对象
			Student s = inputStudent();
			//将学生对象添加到treeSet集合
			stus.add(s);
			System.out.println("是否继续录入学生信息?yes/no");
			String answer = input.next();
			if(!"yes".equals(answer))
				break;
		}
		
		return stus;
	}
	
	
	/***
	 * 将学生信息写入到student.txt
	 * @param args
	 */
	public static void writeStudent(TreeSet<Student> stus) {
		try {
			FileWriter fw=new FileWriter("D:/test2/student.txt");
			//遍历学生对象集合
			for(Student s:stus) {
				//将对象转化为字符串写入到文件
				fw.write(s.toString()+"\r\n");
			}
			
			fw.flush();
			fw.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}

你可能感兴趣的:(Java练习题以及常用面试问题,java,封装)