fanxiaolv 2012-07-24 09:20
浏览 412
已采纳

Java对txt中数据的修改

用java读入、修改、再把修改后的数据写入新txt,希望写入新txt的结果是所有的相邻字母对出现的次数(ab=次,ba=次,aa=次,等等),原始数据中的*和#分别表示字母串的开始和结束。
我是Java初学者,请大家帮忙,写一个可以直接运行并且初学者能读懂的代码,关键部分给出注释。感谢大家热心帮忙。

源txt部分数据(都是这种格式):
*
a
b
#
*
a
b
b
#
*
a
a
b
c
#
*
a
c
c
b
#
*
d
#
*
a
d
b
a
d
d
c
#

  • 写回答

5条回答 默认 最新

  • weixin_42608382 2012-07-24 11:14
    关注

    [code="java"]
    public static void main(String[] args) throws Exception {
    adjacentLetters();
    }

    public static void adjacentLetters() throws Exception {
        String inFile = "D:\\data.txt";
        String outFile = inFile;
        BufferedReader bs = null;
        BufferedWriter bw = null;
        try{
            bs = new BufferedReader(new FileReader(new File(inFile)));
            char[] ch = new char[3];
            char c = 0;
            char oc = 0;
            Map<String, Integer> outData = new TreeMap<String, Integer>();
            String key = "";
            Integer sum = 0;
            while (bs.read(ch) != -1) {
                c = ch[0];
                if(c == '*' || c == '#'){
                    oc = 0;
                    continue;
                }
                if(oc == c || (oc + 1) == c || (oc - 1) == c){
                    key = String.valueOf(oc) + String.valueOf(c);
                    sum = outData.get(key);
                    if(sum == null){
                        sum = 0;
                    }
                    outData.put(key, ++sum);
                }
                oc = c;
            }
            //bs.close();
            //bs = null;
            if(!outData.isEmpty()){
                //true 追加  false不追加(至文件尾)
                bw = new BufferedWriter(new FileWriter(new File(outFile), false));
                for(Entry<String, Integer> entry: outData.entrySet()){
                    bw.write(entry.getKey() + ":" + entry.getValue() + "\r\n");
                }
            }
        }finally{
            if(bs != null)
                bs.close();
            if(bw != null)
                bw.close();
        }
    }
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况