Java-综合练习题(结课之前的大作业)

例如:定义学生父类和不同阶段学生子类(本科生、研究生等),包含学生信息(学号、姓名、成绩或年龄等),子类要实现父类的方法,要有不同的表现。将对象存入集合中,可以按学号或成绩排序。

编写一个程序,实现集合相关操作,要求如下:

  1. 定义一个父类,并定义多个不同子类,子类分别以不同方式重写父类的方法;
  2. 定义多个类型的对象,编写方法实现多态效果;
  3. 将多个对象存放在一个适当的集合中;
  4. 使用合适的方法对集合中的数据按一定的方式排序;
  5. 使用迭代器遍历集合并输出集合的元素,将排序后输出的结果写入out.txt文件中;
  6. 【要求】集合中要使用泛型,IO操作需要有异常处理。
import java.io.*;
import java.util.Iterator;
import java.util.TreeSet;
public class w {
    public static void main(String[] args) {
        TreeSet<student> stu=new TreeSet<>();
        stu.add(new undergraduate(1001,"潘雨威",98,18));
        stu.add(new postgraduate(1002,"齐于太",130,25));
        stu.add(new undergraduate(1003,"周桑",120,18));
        stu.add(new postgraduate(1000,"张三",130,30));
        File file=new File("作业1.txt");
        try {
            file.createNewFile();
            FileOutputStream out=new FileOutputStream(file);
            OutputStreamWriter writer=new OutputStreamWriter(out);
            BufferedWriter writer1=new BufferedWriter(writer);
            Iterator<student> it=stu.iterator();
            while(it.hasNext()){
                student temp=it.next();
                String str=temp.student_id+"-"+temp.student_name+"-"+temp.student_grade+"-"+temp.student_age;
                writer1.write(str);
                writer1.newLine();
                System.out.println(str);
            }
            writer1.close();
        }catch (IOException e){
            e.printStackTrace();
        }
   }
}
class student implements Comparable{
    int student_id;
    String student_name;
    int student_grade;
    int student_age;
    public String toString(){
        return student_id+"-"+student_name+"-"+student_grade+"-"+student_age;
    }
    public int compareTo(Object obj){
        student s=(student) obj;
        if(this.student_grade<s.student_grade){
            return 1;
        }
        if(this.student_grade==s.student_grade&&this.student_id>student_id){
            return 1;
        }
        return -1;
    }
}
class undergraduate extends student {
    undergraduate(int student_id,String student_name,int student_grade,int student_age){
        this.student_age=student_age;
        this.student_id=student_id;
        this.student_name=student_name;
        this.student_grade=student_grade;
    }
}
class postgraduate extends student{
    postgraduate(int student_id,String student_name,int student_grade,int student_age){
        this.student_age=student_age;
        this.student_id=student_id;
        this.student_name=student_name;
        this.student_grade=student_grade;
    }
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值