[Java] 纯文本查看 复制代码
package demo237;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*
* 统计字符个数程序:
1. 在项目根路径下创建文件”data.txt”,用于存放统计的字符个数
2. 使用键盘录入一个字符串,获取字符串中每一个字符出现的个数,并将统计结果存入”data.txt”文件中,要求如下:
2.1 如键盘录入的字符在文件中也存在,统计结果需累加键盘录入个数和文件存在个数
2.2 要求统计结果格式为: 字符:个数并以”,”连接,末尾处不需要”,”结尾,
如:a:5,b:4,c:3,d:2
2.3 不将”:”和”,”作为统计字符
*/
public class Test2 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一组英文小写数字:");
String line = sc.nextLine();
sc.close();
// 定义接收键盘接收HashMap集合hs
HashMap<Character, Integer> hs = new HashMap<Character, Integer>();
char[] chs = line.toCharArray();
for (char c : chs) {
Integer i = hs.get(c);// hs.containsKey(key) 判断是否存在该值
if (i == null) {
hs.put(c, 1);
} else {
i++;
hs.put(c, i);
}
}
//System.out.println("输入的累加:" + hs);
BufferedReader br = new BufferedReader(new FileReader("data.txt"));
String brString = br.readLine();
br.close();
// 定义接收文件接收HashMap集合 hashMap
HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
// 定义拼接数组
StringBuilder sb = new StringBuilder();
if (!(brString == null)) {
splitString(brString, hashMap);
//System.out.println(hashMap);
// 遍历集合累加
if (hs.size() > hashMap.size()) {
Set<Character> keySet = hs.keySet();
for (Character key : keySet) {
if (hashMap.containsKey(key)) {
int i = hs.get(key) + hashMap.get(key);
sb.append(key).append(":").append(i).append(",");
} else {
sb.append(key).append(":").append(hs.get(key)).append(",");
}
}
} else {
Set<Character> keySet = hashMap.keySet();
for (Character key : keySet) {
if (hs.containsKey(key)) {
int i = hs.get(key) + hashMap.get(key);
sb.append(key).append(":").append(i).append(",");
} else {
sb.append(key).append(":").append(hashMap.get(key)).append(",");
}
}
}
} else {
Set<Character> keySet = hs.keySet();
for (Character key : keySet) {
sb.append(key).append(":").append(hs.get(key)).append(",");
}
}
String sbNew = sb.substring(0, sb.length() - 1);
//System.out.println(sbNew);
BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));
bw.write(sbNew);
bw.close();
System.out.println("文件输出成功!");
}
private static void splitString(String brString, HashMap<Character, Integer> hashMap) {
String[] split = brString.trim().split(",");
//System.out.println(Arrays.toString(split));
for (String string : split) {
// String trim = string.trim();
char key = string.substring(0, 1).charAt(0);
// int i = trim.lastIndexOf(":");
String s2 = string.substring(string.lastIndexOf(":") + 1, string.length());
//System.out.println(key);
Integer value = Integer.valueOf(s2);
//System.out.println(value);
hashMap.put(key, value);
}
}
}
[Java] 纯文本查看 复制代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Demo1 {
public static void main(String[] args) throws IOException {
TreeMap<Character,Integer> map = new TreeMap<Character,Integer>();
BufferedReader br = new BufferedReader(new FileReader("data.txt"));
String srcLine = br.readLine();
String[] srcLs=srcLine.split(",");
for(String s:srcLs){
map.put(s.charAt(0), Integer.parseInt(Character.toString(s.charAt(2))));
}
Scanner sc = new Scanner(System.in);
//请输入字符串
System.out.println("请输入字符串");
String line = sc.nextLine();
char[] chs = line.toCharArray();
for(int i = 0 ;i<chs.length;i++){
if(Character.isLetter(chs)){
Integer value=map.get(chs);
if(value==null){
map.put(chs, 1);
}else{
map.put(chs, ++value);
}
}
}
StringBuilder sb=new StringBuilder();
Set<Character> keys=map.keySet();
for(Character key:keys){
sb.append(key+":"+map.get(key)+",");
}
sb.deleteCharAt(sb.length()-1); //删除末尾逗号
System.out.println(sb.toString());
PrintWriter pw = new PrintWriter("data.txt");
pw.println(sb.toString());
pw.close();
}
}