学生信息的添加与查询(map,set,list)

版权声明:正在学习中,有错误欢迎指出。感谢比❤❤~ https://blog.csdn.net/gx17864373822/article/details/79976025

Problem Description
设计一个学生添加和查询的系统,从键盘读入学生的数据,然后再从屏幕显示出来。
Input
第一行有2个整数N和M,其中:N——学生数量,M——学生属性数量;
第二行有M个字符串,表示学生的属性名称,其中第1个属性id表示关键字;其中各字段属性的数据类型是确定的。
接下来有N行M列数据,分别表示学生各种属性的值,关键字相同的记录代表一个学生(后来读入的信息覆盖前面读入数据)
Output
输出所有学生的属性及数据。(每行的列数据之间用‘\t’进行分隔)
Sample Input
5 4
id name birthday score
0001 Mike 1990-05-20 98.5
0002 John 1992-05-20 67
0003 Hill 1994-05-02 36.5
0004 Christ 1996-05-20 86.5
0001 Jack 1998-05-20 96
Sample Output
id:0001 name:Jack birthday:1998_5_20 score:96.0
id:0002 name:John birthday:1992_5_20 score:67.0
id:0003 name:Hill birthday:1994_5_2 score:36.5
id:0004 name:Christ birthday:1996_5_20 score:86.5

package pp;

import java.text.ParseException;

import java.text.SimpleDateFormat;
import java.util.*;

class Changedate{//转换日期
    public String datecon(String str) throws ParseException {
        SimpleDateFormat dfs1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat dfs2 = new SimpleDateFormat("yyyy_M_d");//格式
        return dfs2.format(dfs1.parse(str));//将dfs1日期先转变为数,再按sdf2的格式进行转换
    }
}

class Student{
    String name;
    String date;
    float score;

    public String getName() {//可以快速生成
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public float getScore() {
        return score;
    }
    public void setScore(float score) {
        this.score = score;
    }


    public Student(String name, String date, float score) {
        super();
        this.name = name;
        this.date = date;
        this.score = score;
    }


    Changedate d = new Changedate();

    public String toString() {
        try {
            return "name:" + name + "\tbirthday:" + d.datecon(date) + "\tscore:" + String.format("%.1f", score);//注意这种形式可以进行格式化输出小数点
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return date;//??
    }
}
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//学生数量
        int m = sc.nextInt();//字段数量

        sc.nextLine();//回车
        sc.nextLine();//不存第二行的属性,承接回车

        Map<String, Student> map = new HashMap<String, Student>();

        for(int i = 0; i < n; i++) {
            String id = sc.next();
            Student S = new Student(sc.next(), sc.next(), sc.nextFloat());
            map.put(id, S);//key为id,学生对象为value
        }

        Set<String> keySet = map.keySet();//map的取出

        List<String> list = new ArrayList<String>(keySet);//转化为list
        //进行排序
        Collections.sort(list, new Comparator<String>() {
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);//看是否相等
            }
        });

        for(int i = 0; i < list.size(); i++) {
            System.out.print("id:" + list.get(i) + "\t");//id
            System.out.println(map.get(list.get(i)));//id的值
        }
    }
}
阅读更多

没有更多推荐了,返回首页