【Java语言基础】IO流、FileWriter、FileReader、BufferedWriter、BufferedReader、Lambda表达式综合练习题day17

这些题目都是一个套路,加油!

1.有五个学生,每个学生有3门课的成绩

从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan,30,40,60计算出总成绩, 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。

package day16;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

class Student
{
    private String name;
    private int score1;
    private int score2;
    private int score3;
    private int sum;

    public Student(String name, int score1, int score2, int score3) {
        this.name = name;
        this.score1 = score1;
        this.score2 = score2;
        this.score3 = score3;
        this.sum = score1+score2+score3;
    }

    public String getName() {
        return name;
    }

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

    public int getScore1() {
        return score1;
    }

    public void setScore1(int score1) {
        this.score1 = score1;
    }

    public int getScore2() {
        return score2;
    }

    public void setScore2(int score2) {
        this.score2 = score2;
    }

    public int getScore3() {
        return score3;
    }

    public void setScore3(int score3) {
        this.score3 = score3;
    }

    public int getSum() {
        return sum;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score1=" + score1 +
                ", score2=" + score2 +
                ", score3=" + score3 +
                ", sum=" + sum +
                '}';
    }
}

public class Demo1 {
    public static void main(String[] args)throws IOException
    {
        Student stu1 = new Student("zhangsan",55,40,50);
        Student stu2 = new Student("lisi",82,86,90);
        Student stu3 = new Student("wangwu",50,68,73);
        List<Student> stu = new ArrayList<>();
        stu.add(stu1);
        stu.add(stu2);
        stu.add(stu3);
        stu.sort((e1,e2) -> e2.getSum() - e1.getSum());

        FileWriter fileWriter = new FileWriter("stu.txt");
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

        bufferedWriter.write(stu.get(0).toString());
        bufferedWriter.newLine();

        bufferedWriter.write(stu.get(1).toString());
        bufferedWriter.newLine();

        bufferedWriter.write(stu.get(2).toString());
        bufferedWriter.newLine();

        bufferedWriter.close();
    }
}

2.已知文件 source.txt 中的内容如下

username=root   , password=  1234,    id=1, level=   10
username=    adimin, mima= 1234   ,     id=2,    level=  11
yonghu=  xiaoming   ,dengji=  12 ,password= 1234,id=  3

(1).读取文本中的数据,将每一行的数据封装成模型,存入 List 中
(2)去除集合中id重复的数据,只保留重复id的第一个数据
(3)计算这些用户的平均等级、最高等级、最低等级
(4) 将集合中的数据按照等级降序排序

package day16;

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Set;
import java.util.HashSet;

class User
{
    private String username;
    private String password;
    private String id;
    private int level;

    User(String str)
    {
        Map<String, String> userMap = new TreeMap<>();
        String[] s1 = str.split(",");
        String[] s2 = new String[2];
        for(int i=0; i<s1.length; i++)
        {
            s2 = s1[i].split("=");
            if (s2[0].equals("username") || s2[0].equals("yonghu"))
                userMap.put("username",s2[1]);
            else if (s2[0].equals("password") || s2[0].equals("mima"))
                userMap.put("password",s2[1]);
            else if (s2[0].equals("id"))
                userMap.put("id",s2[1]);
            else if (s2[0].equals("level") || s2[0].equals("dengji"))
                userMap.put("level",s2[1]);
        }

        this.username = userMap.get("username");
        this.password = userMap.get("password");
        this.id = userMap.get("id");
        this.level = Integer.parseInt(userMap.get("level"));
    }

    public int hashCode()
    {
        return id.hashCode();
    }

    public boolean equals(Object obj)
    {
        if(!(obj instanceof User))
            throw new ClassCastException();
        User user = (User) obj;
        return this.id.equals(user.getId());
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public String getId() {
        return id;
    }

    public int getLevel() {
        return level;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", id='" + id + '\'' +
                ", level=" + level +
                '}' + "\n";
    }
}

public class Demo2 {
    public static void main(String[] args) throws IOException
    {
        List<User> users = getUser();
        System.out.println(users);

        Set<User> set = delSame(users);
        System.out.println(set);

        level(users);

        System.out.println(sort(users));

    }

    public static List<User> getUser() throws IOException
    {
        FileReader fileReader = new FileReader("source.txt");
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        List<User> users = new ArrayList<>();
        String str = null;
        while((str=bufferedReader.readLine()) != null)
        {
            String s = str.replaceAll(" ","");
//            System.out.println(s);
            users.add(new User(s));
        }
        return  users;
    }

    public static Set<User> delSame(List<User> users)
    {
        return new HashSet<>(users);
    }

    public static void level(List<User> users)
    {
        int sumLevel = 0,maxLevel = users.get(0).getLevel(), minLevel = users.get(0).getLevel();
        for (User user : users) {
            sumLevel += user.getLevel();
            if (user.getLevel() > maxLevel)
                maxLevel = user.getLevel();
            if (user.getLevel() < minLevel)
                minLevel = user.getLevel();
        }
        System.out.println("aveLevel:" + sumLevel/users.size()
                + ",maxLevel:" + maxLevel + ",minLevel:" + minLevel);
    }

    public static List<User> sort(List<User> users)
    {
        users.sort((u1,u2) -> u2.getLevel()-u1.getLevel());
        return users;
    }


}

3.已知一个文本内容如下:

name:xiaoming, 	age:10,		gender:male,	height:172cm,	weight:70kg
age:20,height:177cm,name:xiaobai,weight:80kg,gender:male
gender:female,height:176cm,weight:66kg,name:xiaolv,age:21

(1)读取这个文本中的数据,将每一行的数据封装到一个Person对象中,并存入一个List集合

(2)删除集合中所有的未成年的数据

(3)计算所有人的平均年龄、最大年龄、最小年龄

(4)将集合中的数据按照年龄进行降序排序,若年龄相同,按照身高降序排序

package day16;

import java.util.*;
import java.io.*;

enum Gender
{
    MALE("男"),FEMALE("女");
    private String msg;
    Gender(String msg)
    {
        this.msg = msg;
    }
    public static Gender getGender(String sex) {
        if (sex.equals("male"))
            return MALE;
        else  if(sex.equals("female"))
            return FEMALE;
        else
            return null;
    }
}

class Person
{
    private String name;
    private int age;
    private Gender gender;
    private int height;
    private int weight;

    Person(String str)
    {
        String[] s1 = str.split(",");
        String[] s2;
        Map<String, String> perMap = new HashMap<>();

        for (int i=0; i<s1.length; i++)
        {
            s2 = s1[i].split(":");
            if(s2[0].equals("name"))
                perMap.put(s2[0], s2[1]);
            else if(s2[0].equals("age"))
            {
                s2[1]=s2[1].replace("岁", "");
                //System.out.println(s2[1]);
                perMap.put(s2[0], s2[1]);
            }
            else if(s2[0].equals("gender"))
                perMap.put(s2[0], s2[1]);
            else if(s2[0].equals("height"))
            {
                s2[1]=s2[1].replace("cm", "");
                perMap.put(s2[0], s2[1]);
            }
            else if(s2[0].equals("weight"))
            {
                s2[1]=s2[1].replace("kg", "");
                perMap.put(s2[0], s2[1]);
            }
        }
        this.name = perMap.get("name");
        this.age = Integer.parseInt(perMap.get("age"));
        this.gender = Gender.getGender(perMap.get("gender"));
        this.height = Integer.parseInt(perMap.get("height"));
        this.weight = Integer.parseInt(perMap.get("weight"));
    }

    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 Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) {
        this.gender = gender;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", height=" + height +
                ", weight=" + weight +
                '}' + "\n";
    }
}


public class Demo3 {
    public static void main(String[] args)throws IOException
    {

        List<Person> p1 = getPerson();
        System.out.println("获取List:"+p1);

//        List<Person> p2 = del(p1);
//        System.out.println("删除未成年:"+p2);

//        age(p1);

        System.out.println("排序后:"+sort(p1));



    }

    public static List<Person> getPerson() throws IOException
    {
        FileReader fileReader  = new FileReader("person.txt");
        BufferedReader  bufferedReader  = new BufferedReader (fileReader );
        List<Person> p = new ArrayList<>();
        String str = null;
        while ((str = bufferedReader.readLine()) != null)
        {
            Person person = new Person(str);
            p.add(person);
        }
        return p;
    }

    public static List<Person> del(List<Person> p)
    {
        p.removeIf(e -> e.getAge()<18);
        return p;
    }

    public static void age(List<Person> p)
    {
        p.sort((p1,p2) -> p2.getAge() - p1.getAge());
        int sum=0;
        for(Person elem:p)
        {
            sum += elem.getAge();
        }
        System.out.println("aveAge:" + sum/p.size() + ",max:" +
                p.get(0).getAge() + ",min:" + p.get(p.size()-1).getAge());
    }

    public static List<Person> sort(List<Person> p)
    {
        p.sort((p1,p2) ->{
            int num = p2.getAge() - p1.getAge();
            return num == 0 ? p2.getAge() - p1.getAge() : num;
        });
        return p;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值