把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
      
      
package com.CSDN;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,例如:
* a: 21 次
* b: 15 次
* c:: 15 次
* 把: 7 次
* 当: 9 次
* 前: 3 次
* ,:30 次
* 思路:
* 1.定义一个返回值 类型为Map<Character, Integer>的方法形参是str(String),
* 来统计字符次数
* 2.通过IO流的读取和写入数据
* 把当前文件中的所有文本拷贝,存入一个txt文件
* 并遍历元素
*/
public class Test5 {
public static void main(String[] args) {
// 定义输入流,输出流
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("src\\com\\CSDN\\Test_8.java"));
bw = new BufferedWriter(new FileWriter("src\\com\\CSDN\\Test_8.txt"));
String res = null;
StringBuffer sb = new StringBuffer();
while((res = br.readLine()) != null) {
// 添加字符串
sb.append(res);
// 写入数据
bw.write(res);
// 换行
bw.newLine();
// 刷新流数据
bw.flush();
}
Map m = countChar(sb.toString());
Set s = m.entrySet();
// 使用迭代器迭代
Iterator it = s.iterator();
// 判断是否存在下一个元素,遍历写入数据
while(it.hasNext()) {
Entry<Character, Integer> entry = (Entry<Character, Integer>)it.next();
// System.out.println(entry.getKey() + ": " + entry.getValue() + "次");
bw.write(entry.getKey() + ": " + entry.getValue() + "次");
bw.newLine();
bw.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/*
* 统计字符次数
*/
public static Map<Character, Integer> countChar(String str) {
// 创建一个Map集合
Map<Character, Integer> map = new HashMap<Character, Integer>();
char[] ch = new char[str.length()];
str.getChars(0, str.length(),ch, 0);
//增强for循环进行遍历
for(char c : ch) {
Integer count = map.get(c);
if(count == null) {
map.put(c, 1);
} else {
map.put(c, ++count);
}
}
return map;
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值