A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luchatex 中级黑马   /  2016-9-21 17:51  /  1070 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一道题,答案自己写出来的,感觉写的特别的不好,希望大神指正!(习惯不好哈.没有加注释.看的比较累...)

[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);
		}
	}
}

2 个回复

倒序浏览
你看看吧……
[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[i])){
					Integer value=map.get(chs[i]);
					if(value==null){
						map.put(chs[i], 1);
					}else{
						map.put(chs[i], ++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();
		}
}
回复 使用道具 举报
感谢大神赐教~向你学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马