获取一个文本上每个字符出现的次数,将结果写在自定义的文本上(times.txt)

具体结果视用户的文本而定:


附代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class Test2 {

	/**
	 * @param args
	 * 获取一个文本上每个字符出现的次数,将结果写在times.txt上
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("a.txt"));	//创建字符输入流,关联a.txt
		TreeMap<Character, Integer> tm = new TreeMap<>();					//创建双列集合
		
		int ch;
		while((ch = br.read()) != -1) {										//read()方法读一次会将缓冲区读满,从缓冲区将字符返给ch
			char c = (char)ch;												//读到的字符提升为int类型需要强转为char
			/*if(!tm.containsKey(c)) {										//如果集合中不包含这个键
				tm.put(c, 1);												//将键和值为1存入
			}else {															//如果集合中包含这个键
				tm.put(c, tm.get(c) + 1);									//将键和值+1存进去
			}*/
			
			tm.put(c, !tm.containsKey(c)? 1 : tm.get(c) + 1);
		}
		
		br.close();															//关闭输入流
		BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));//创建输出流对象
		for(Character key : tm.keySet()) {									//遍历双列集合
			switch (key) {													
			case '\t':														//写出\t和出现的次数
				bw.write("\\t" + "=" + tm.get(key));
				break;
			case '\r':
				bw.write("\\r" + "=" + tm.get(key));						//写出\r和出现的次数
				break;
			case '\n':
				bw.write("\\n" + "=" + tm.get(key));						//写出\n和出现的次数
				break;
			default:
				bw.write(key + "=" + tm.get(key));							//写出其他字符和出现的次数
				break;
			}
			bw.newLine();													//写出换行
		}
		bw.close();															//关闭写出流
	}

}


我的部分 运行结果如下:      ps:会打印出每个字符的出现次数并实现列举自动转行等操作。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值