以下是JAVA中三种方式实现文件字符统计

以下是JAVA中三种方式实现文件字符统计

package com.lyc.gui;

import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**

  • 统计一个文件countCharNum2.txt中各个字母出现次数,
  • 显示格式:A(8),B(16),C(10)…,a(12),b(10),c(3)…中(5),国(6),
  • 括号内代表字符出现次数countCharNum2.txt:AAaaaBBBBbbbCccDDDddddEefFF中国中国中国中中中国
  • @author JLB

*/
public class Demo03
{

public static void main(String[] args) throws IOException 
{
	FileReader fr = new FileReader("F:\\培训\\课程\\2018-12-14\\作业\\ss.txt");
	HashMap<Object,Integer> map = new HashMap<Object,Integer>();
	//Set<Integer> set = new HashSet<Integer>();
	int i;
	int a=1;
	while( (i = fr.read()) !=-1 )
	{
		char ss = (char)i;
		
		if(map.containsKey(ss))
		{
			int s = map.get(ss);
			s++;
			map.put(ss, s);
		}
		else
		{
			map.put(ss, a);
		}
		
			
	}
	Set set = map.keySet();
	Iterator<Object> it = set.iterator();
	while(it.hasNext())
	{
		Object str = it.next();
		System.out.println(str+":出现了:"+map.get(str));
	}
}

}

=============================================================================

package com.lyc.gui;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**

  • 统计一个文件countCharNum2.txt中各个字母出现次数,
  • 显示格式:A(8),B(16),C(10)…,a(12),b(10),c(3)…中(5),国(6),
  • 括号内代表字符出现次数countCharNum2.txt:AAaaaBBBBbbbCccDDDddddEefFF中国中国中国中中中国
  • @author JLB

*/
public class Homework6 {

public static void main(String[] args) {

	try {
		FileReader fileReader = new FileReader("countCharNum.txt");
		int num = 0;
		int index = 0;
		int count = 0;
		char char1 = '0';
		char char2 = '0';
		Map<Integer,Character> map = new HashMap<Integer,Character>();
		Set<Character> str1 = new HashSet<Character>();
		while((num=fileReader.read()) != -1){
			++index;
			map.put(index, (char)num);
			str1.add((char)num);
		}
		Iterator<Character> it = str1.iterator();
		while(it.hasNext()){
			char1=it.next();
			for (int i = 1; i <= map.size(); i++) {
				char2 = map.get(i);
				if(char1==char2){
					count++;
				}
			}
			System.out.print(char1+"("+count+")");
			count=0;
		}
		
		
		fileReader.close();
	} catch (FileNotFoundException e) {
		System.out.println("文件不存在!");
		e.printStackTrace();
	}catch (IOException e) {
		e.printStackTrace();
	}
}

}

package com.lyc.gui;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class Test6 {
/**
* 统计一个文件countCharNum2.txt(见附件)中各个字母出现次数:
* A(8),B(16),C(10)…,a(12),b(10),c(3)…中(5),国(6),
* 括号内代表字符出现次数;
*
* 程序分析:
* 1.这出现中文字符,依然只能用字符流来读取文件
* 2.不能保存相同的主键值,可以使用HashMap:key-value来实现
* 3.先获得该key的value,如果存在key的话value的值加1
* */
public static void main(String[] args) {
// 文件路径
File file = new File(“F:\java\countCharNum2.txt”);
// 创建集合HashMap类存放要保存的key-value
HashMap<String, Integer> map = new HashMap<>();

    try {  
    	
    	// 创建字符流  
    	InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK"); //可以设置读取编码

// FileReader fr = new FileReader(file); //只能读取utf8编码

        // 每次读取的字符编码值 
        int len = 0;  
        while ((len = isr.read()) != -1) {  
            // 获取对应的字符  
            char c = (char) len;  
            String key = c+"";
            System.out.println(len+"----"+key);
            // 如果有它的key值对应的value值要加1
            if(map.get(key)==null){
            	map.put(key, 1);  
            }else{
            	map.put(key, map.get(key)+1);
            }
        }  
          
        // 读完后把结果打印出来  
        Iterator<Entry<String, Integer>> iterator = map.entrySet().iterator();  
          
        //迭代器的使用  
        while (iterator.hasNext()) {                  
            Entry<String, Integer> entry = iterator.next();  
            System.out.print(entry.getKey() + "(" + entry.getValue()+ ") \t");  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  

}  

}

=============================================================================

猜你喜欢

转载自blog.csdn.net/qq_42902470/article/details/85074568