统计文件中字符个数BufferedReader BufferedWriter HashMap

package com.heima.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;

import javax.imageio.stream.FileImageInputStream;

public class Test17 {

    /**统计文件中字符个数BufferedReader BufferedWriter HashMap
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        BufferedReader br = 
                new BufferedReader(new FileReader("text.txt"));
        BufferedWriter bw =
                new BufferedWriter(new FileWriter("times.txt"));
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
        int c;
        while((c = br.read()) != -1){
            char key = (char)c;
            if(!hm.containsKey(key)){
                hm.put(key, 1);
            }else{
                hm.put(key, hm.get(key)+1);
            }

        }
        for (char key : hm.keySet()) {
            switch (key) {
            case '\t':
                bw.write("\\t" + ":次数为"+hm.get(key));
                break;
            case '\n':
                bw.write("\\n" + ":次数为"+hm.get(key));
                break;
            case '\r':
                bw.write("\\r" + ":次数为"+hm.get(key));
                break;
            case ' ':
                bw.write("空格" + ":次数为"+hm.get(key));
                break;
            default:
                bw.write(key + ":次数为"+hm.get(key));
                break;
            }
            bw.newLine();
        }
        br.close();
        bw.close();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个Java程序,可以实现你所需要的功能: ```java import java.io.*; import java.util.*; public class FileStats { public static void main(String[] args) { String inputFile = "abc.txt"; String outputFile = "result.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(inputFile)); BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) { int wordCount = 0; int lineCount = 0; Map<Character, Integer> charCounts = new HashMap<>(); String line; while ((line = reader.readLine()) != null) { lineCount++; // Split the line into words String[] words = line.split("[^a-zA-Z]+"); for (String word : words) { if (!word.isEmpty()) { wordCount++; // Count the characters in the word for (char c : word.toCharArray()) { charCounts.put(c, charCounts.getOrDefault(c, 0) + 1); } } } } // Write the results to the output file writer.write(String.format("Word count: %d\n", wordCount)); writer.write(String.format("Line count: %d\n", lineCount)); writer.write("Character counts:\n"); for (Map.Entry<Character, Integer> entry : charCounts.entrySet()) { char c = entry.getKey(); int count = entry.getValue(); double percent = ((double) count / wordCount) * 100; writer.write(String.format("%c: %d (%.2f%%)\n", c, count, percent)); } System.out.println("Results written to " + outputFile); } catch (IOException e) { e.printStackTrace(); } } } ``` 该程序使用了Java的文件输入输出库,以及Java的集合框架。它的思路是先读取输入文件的每一行,然后将每一行拆分成单词,再统计单词数和每个字符出现的次数。最后将结果写入输出文件。 你只需要将程序的 `abc.txt` 和 `result.txt` 替换成你自己的文件名,即可使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值