南頔161 2022-05-29 10:08 采纳率: 50%
浏览 25
已结题

java基础io流的一个问题

题目:
已知存在一个d:\employee.txt文件,其内容如下:
6060078,李苒,0,艺术学院
6060080,刘雅丽,1,艺术学院
6062008,战飞,0,艺术
6060081,杨四宝,1,计算机学院
6060082,吕卫寰,0,教育学院
6060084,谭筱婷,0,艺术学院
6060085,张弘,1,文创学院
,赵珺果,女性,艺术学院
6060087,肖艳丽,女性,艺术学院
6060082,吕卫,0,教育学院
其实格式为:“职工号,姓名,性别,所属学院”,现要求将该文件每条记录读出,并进行转换,转换规则为:如果性别部分为0则性别值改成女,如果性别部分为1则改成男,如果所属学院部分没有以学院结束,则补上”学院”字样。将转换好的记录以每行一条的方式存档到d:\success.txt中,但是如果职工号部分缺失,不能存入d:\success.txt中,只能存放到d:\error.txt中,如果记录的职工号重复,则不写入d:\success.txt中,将重复记录写入d:\repeats.txt文件中。
求指教!

  • 写回答

1条回答 默认 最新

  • 笑死鱼啦 2022-05-29 12:50
    关注

    做题不易, 希望点击采纳~

    完成效果:

    img

    题目需要完成的功能如下 :
    1.将性别数字改为汉字 读取的时候分割,更改,拼接
    2.学院部分不完全, 补上"学院" 读取的时候,判断包含, 拼接
    3.职工号缺失的数据 存储到 erro.txt 分割,判断是否为空字符"", 不符合存到erro
    4.其余的数据,不重复的情况下, 存入success.txt 放到set中,从set中写到success

    package com.abc.io;
    
    import java.io.*;
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    import java.util.Set;
    
    public class Demo {
        public static void main(String[] args) throws Exception{
            BufferedReader br = new BufferedReader(new FileReader(new File("Question\\employee.txt")));
            
            String info;
            Set<String> set = new LinkedHashSet<>();
            //6060087,肖艳丽,女性,艺术学院
            BufferedWriter bw = new BufferedWriter(new FileWriter(new File("Question\\erro.txt")));
            while ((info=br.readLine())!=null){
                String[] split = info.split(",");
                //3.职工号缺失的数据 存储到 erro.txt   分割,判断是否为null, 不符合存到erro
                if (split[0].equals("")){
                    bw.write(info);
                    continue;
                }
    
                //1.将性别数字改为汉字           读取的时候分割,更改,拼接
                if (split[2].equals("0")){
                    info = split[0]+","+split[1]+","+"女性"+","+split[3];
                }else if(split[2].equals("1")){
                    info = split[0]+","+split[1]+","+"男性"+","+split[3];
                }
    
                //2.学院部分不完全, 补上"学院"     读取的时候,判断包含, 拼接
                if (!split[3].contains("学院")){
                    info = info+"学院";
                }
    
                //4.其余的数据,不重复的情况下, 存入success.txt 放到set中,从set中写到success
                set.add(info);
    
            }
    
            BufferedWriter bw2 = new BufferedWriter(new FileWriter(new File("Question\\success.txt")));
            for (String s : set) {
                bw2.write(s);
                bw2.newLine();
            }
    
            br.close();
            bw.close();
            bw2.close();
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料