编程练习题——用FileReader读取文件内容

**题目目标:
main 方法的第一个参数是文件名。
指定文件的每个行包含下列各式:
名称 月 日 年
其中,[姓名] 是 String,可以包含空格分隔的数个字词。
[月] 为 int,[日] 为 int,[年] 为 int。
数据由空格分隔。

使用文件数据填写 PEOPLE 列表。
关闭流。

示例输入文件:
约翰 杰克 约翰逊 12 31 1987
文森特 5 15 2013

要求:

Solution 类必须包含名为 PEOPLE 的 public List constant,必须对其立即初始化。
程序不得从控制台读取数据。
程序必须读取文件内容(使用 FileReader)。
必须关闭文件输入流 (FileReader)。
程序必须使用文件中的数据填写 PEOPLE 列表。
程序应正确处理带连字符的名称,例如 Mary-Jo。**

解答方式实例:

import java.io.BufferedReader;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
/*
约翰 约翰逊
*/

public class Solution {
    public static final List<Person> PEOPLE = new ArrayList<>();

    public static void main(String[] args) throws Exception {
        FileReader fis = new FileReader(args[0]);
        BufferedReader file = new BufferedReader(fis);

        while (file.ready()) {

            String line = file.readLine();
            String name = line.replaceAll("[0-9]", "").trim();
            String date = line.replaceAll("[^0-9 ]", "").trim();
            PEOPLE.add(new Person(name, new SimpleDateFormat("MM dd yyyy").parse(date)));

        }
        file.close();
    }
}



 class Person {
    private String name;
    private Date birthDate;

    public Person(String name, Date birthDate) {
        this.name = name;
        this.birthDate = birthDate;
    }

    public String getName() {
        return name;
    }

    public Date getBirthDate() {
        return birthDate;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timi先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值