南頔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 基于单片机数字电压表电路组成及框图
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line