zoukankan      html  css  js  c++  java
  • 9-单词统计续

    package PIAO;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    import java.text.DecimalFormat;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Scanner;
    import java.util.Set;
    
    public class piao_3 {
    
    	/**
    	 * 字母出现次数
    	 */
    	public static void English_letter() {
    		DecimalFormat df = new DecimalFormat("0.00%");
    		try {
    			char shu[] = new char[100000];
    			char zimu[] = new char[52];
    			int j = 0;
    			long count[] = new long[52];
    			String pathname = "C:\Users\HP\Desktop\飘c1.txt";
    			File filename = new File(pathname);
    			InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));
    			BufferedReader br = new BufferedReader(reader);
    			String line[] = new String[100000];
    			;
    			for (int i = 0; i < line.length; i++) {
    				line[i] = br.readLine();
    			}
    			br.close();
    			int k = 0;
    			while (line[k] != null) {
    				for (int i = 0; i < line[k].length(); i++) {
    					shu[j] = line[k].charAt(i);
    					j++;
    				}
    				k++;
    			}
    			for (int i = 0; i < shu.length; i++) {
    				switch (shu[i]) {
    				case 'a':
    					zimu[0] = 'a';
    					count[0]++;
    					break;
    				case 'b':
    					zimu[1] = 'b';
    					count[1]++;
    					break;
    				case 'c':
    					zimu[2] = 'c';
    					count[2]++;
    					break;
    				case 'd':
    					zimu[3] = 'd';
    					count[3]++;
    					break;
    				case 'e':
    					zimu[4] = 'e';
    					count[4]++;
    					break;
    				case 'f':
    					zimu[5] = 'f';
    					count[5]++;
    					break;
    				case 'g':
    					zimu[6] = 'g';
    					count[6]++;
    					break;
    				case 'h':
    					zimu[7] = 'h';
    					count[7]++;
    					break;
    				case 'i':
    					zimu[8] = 'i';
    					count[8]++;
    					break;
    				case 'j':
    					zimu[9] = 'j';
    					count[9]++;
    					break;
    				case 'k':
    					zimu[10] = 'k';
    					count[10]++;
    					break;
    				case 'l':
    					zimu[11] = 'l';
    					count[11]++;
    					break;
    				case 'm':
    					zimu[12] = 'm';
    					count[12]++;
    					break;
    				case 'n':
    					zimu[13] = 'n';
    					count[13]++;
    					break;
    				case 'o':
    					zimu[14] = 'o';
    					count[14]++;
    					break;
    				case 'p':
    					zimu[15] = 'p';
    					count[15]++;
    					break;
    				case 'q':
    					zimu[16] = 'q';
    					count[16]++;
    					break;
    				case 'r':
    					zimu[17] = 'r';
    					count[17]++;
    					break;
    				case 's':
    					zimu[18] = 's';
    					count[18]++;
    					break;
    				case 't':
    					zimu[19] = 't';
    					count[19]++;
    					break;
    				case 'u':
    					zimu[20] = 'u';
    					count[20]++;
    					break;
    				case 'v':
    					zimu[21] = 'v';
    					count[21]++;
    					break;
    				case 'w':
    					zimu[22] = 'w';
    					count[22]++;
    					break;
    				case 'x':
    					zimu[23] = 'x';
    					count[23]++;
    					break;
    				case 'y':
    					zimu[24] = 'y';
    					count[24]++;
    					break;
    				case 'z':
    					zimu[25] = 'z';
    					count[25]++;
    					break;
    				case 'A':
    					zimu[26] = 'A';
    					count[26]++;
    					break;
    				case 'B':
    					zimu[27] = 'B';
    					count[27]++;
    					break;
    				case 'C':
    					zimu[28] = 'C';
    					count[28]++;
    					break;
    				case 'D':
    					zimu[29] = 'D';
    					count[29]++;
    					break;
    				case 'E':
    					zimu[30] = 'E';
    					count[30]++;
    					break;
    				case 'F':
    					zimu[31] = 'F';
    					count[31]++;
    					break;
    				case 'G':
    					zimu[32] = 'G';
    					count[32]++;
    					break;
    				case 'H':
    					zimu[33] = 'H';
    					count[33]++;
    					break;
    				case 'I':
    					zimu[34] = 'I';
    					count[34]++;
    					break;
    				case 'J':
    					zimu[35] = 'G';
    					count[35]++;
    					break;
    				case 'K':
    					zimu[36] = 'K';
    					count[36]++;
    					break;
    				case 'L':
    					zimu[37] = 'L';
    					count[37]++;
    					break;
    				case 'M':
    					zimu[38] = 'M';
    					count[38]++;
    					break;
    				case 'N':
    					zimu[39] = 'N';
    					count[39]++;
    					break;
    				case 'O':
    					zimu[40] = 'O';
    					count[40]++;
    					break;
    				case 'P':
    					zimu[41] = 'P';
    					count[41]++;
    					break;
    				case 'Q':
    					zimu[42] = 'Q';
    					count[42]++;
    					break;
    				case 'R':
    					zimu[43] = 'R';
    					count[43]++;
    					break;
    				case 'S':
    					zimu[44] = 'S';
    					count[44]++;
    					break;
    				case 'T':
    					zimu[45] = 'T';
    					count[45]++;
    					break;
    				case 'U':
    					zimu[46] = 'U';
    					count[46]++;
    					break;
    				case 'V':
    					zimu[47] = 'V';
    					count[47]++;
    					break;
    				case 'W':
    					zimu[48] = 'W';
    					count[48]++;
    					break;
    				case 'X':
    					zimu[49] = 'X';
    					count[49]++;
    					break;
    				case 'Y':
    					zimu[50] = 'Y';
    					count[50]++;
    					break;
    				case 'Z':
    					zimu[51] = 'Z';
    					count[51]++;
    				}
    			}
    			int ci = 0;
    			int sum = 0;
    			System.out.println("短文中各字母出现情况统计如下:");
    			for (int i = 0; i < 26; i++) {
    				count[i] += count[i + 26];
    				if (count[i] != 0) {
    					ci++;
    					sum += count[i];
    					System.out.println(ci + ".字母" + zimu[i] + "的出现次数是:" + count[i]);
    				}
    			}
    
    			for (int i = 0; i < 26; i++) {
    				System.out.println(zimu[i] + "出现的百分比为:" + df.format(count[i] * 1.0 / sum));
    			}
    			System.out.println("字母共计:" + sum + "个");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 单词出现的次数
    	 * 
    	 * @throws FileNotFoundException
    	 */
    	public static void English_word() throws FileNotFoundException {
    		File file = new File("C:\Users\HP\Desktop\飘c1.txt");// 读取文件
    		String words[] = new String[100000];
    		int out_words[] = new int[100000];
    		if (!file.exists()) {// 如果文件打不开或不存在则提示错误
    			System.out.println("文件不存在");
    			return;
    		}
    		Scanner x = new Scanner(file);
    		HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
    		while (x.hasNextLine()) {
    			String line = x.nextLine();
    			String[] lineWords = line.split("[\s+	”“();,.?!
    ]");
    			Set<String> wordSet = hashMap.keySet();
    			for (int i = 0; i < lineWords.length; i++) {
    				if (wordSet.contains(lineWords[i])) {
    					Integer number = hashMap.get(lineWords[i]);
    					number++;
    					hashMap.put(lineWords[i], number);
    				} else {
    					hashMap.put(lineWords[i], 1);
    				}
    			}
    		}
    		Iterator<String> iterator = hashMap.keySet().iterator();
    		int max = 0, i = 0;
    		while (iterator.hasNext()) {
    			String word = iterator.next();
    			if (!"".equals(word) && word != null && !"a".equals(word) && !"the".equals(word) && !"  ".equals(word)) {
    				words[i] = word;
    				out_words[i] = hashMap.get(word);
    				i++;
    			}
    		}
    		int change = 0;
    		String change_word = null;
    		for (int j = 0; j <= i; j++) {
    			for (int k = j; k <= i; k++) {
    				if (out_words[k] > out_words[j]) {
    					change = out_words[j];
    					change_word = words[j];
    					out_words[j] = out_words[k];
    					words[j] = words[k];
    					out_words[k] = change;
    					words[k] = change_word;
    				}
    
    			}
    		}
    		for (int j = 0; j < i; j++) {
    			System.out.println(words[j] + " 出现次数:" + out_words[j]);
    		}
    	}
    	
    	public static void English_words() throws FileNotFoundException {
    		File file = new File("C:\Users\HP\Desktop\飘c1.txt");// 读取文件
    		String words[] = new String[100000];
    		int out_words[] = new int[100000];
    		if (!file.exists()) {// 如果文件打不开或不存在则提示错误
    			System.out.println("文件不存在");
    			return;
    		}
    		Scanner x = new Scanner(file);
    		HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
    		while (x.hasNextLine()) {
    			String line = x.nextLine();
    			String[] lineWords = line.split("[\s+	”“();,.?!
    ]");
    			Set<String> wordSet = hashMap.keySet();
    			for (int i = 0; i < lineWords.length; i++) {
    				if (wordSet.contains(lineWords[i])) {
    					Integer number = hashMap.get(lineWords[i]);
    					number++;
    					hashMap.put(lineWords[i], number);
    				} else {
    					hashMap.put(lineWords[i], 1);
    				}
    			}
    		}
    		Iterator<String> iterator = hashMap.keySet().iterator();
    		int max = 0, i = 0;
    		while (iterator.hasNext()) {
    			String word = iterator.next();
    			if (!"".equals(word) && word != null && !"a".equals(word) && !"the".equals(word) && !"  ".equals(word)) {
    				words[i] = word;
    				out_words[i] = hashMap.get(word);
    				i++;
    			}
    		}
    		int change = 0;
    		String change_word = null;
    		for (int j = 0; j <= i; j++) {
    			for (int k = j; k <= i; k++) {
    				if (out_words[k] > out_words[j]) {
    					change = out_words[j];
    					change_word = words[j];
    					out_words[j] = out_words[k];
    					words[j] = words[k];
    					out_words[k] = change;
    					words[k] = change_word;
    				}
    
    			}
    		}
    		Scanner scan = new Scanner(System.in);
    		System.out.print("请设置前几个最高频率单词");
    		int ms = scan.nextInt();
    		for (int j = 0; j < ms; j++) {
    			System.out.println(words[j] + " 出现次数:" + out_words[j]);
    		}
    	}
    
    	public static void main(String[] args) throws FileNotFoundException {
    		// TODO 自动生成的构造函数存根
    				System.out.println("选择进行的功能");
    				System.out.println("1,统计字母出现的个数以及频率");
    				System.out.println("2,统计单词出现的个数以及频率");
    				System.out.println("3,统计单词出现的个数以及频率");
    		        Scanner scan = new Scanner(System.in);
    		       
    		        boolean falg = true;
    		        while(falg) {
    		        	 String a = scan.nextLine();
    		        	if("1".equals(a)) {
    		            	English_letter();
    		            	falg=false;
    		            }else if("2".equals(a)) {
    		            	English_word();
    		            	falg=false;
    		            }else if("3".equals(a)) {
    		            	English_words();
    		            	falg = false;
    		            }else {
    		            	System.out.println("请输入正确的选项,比如1");
    		            }
    		        }
    	}
    }
    

      

  • 相关阅读:
    Leetcode:Convert Sorted List to Binary Search Tree
    Leetcode:Unique Binary Search Trees & Unique Binary Search Trees II
    Leetcode::Longest Common Prefix && Search for a Range
    Leetcode::Flatten Binary Tree to Linked List
    Leetcode::JumpGame
    leetcode power(x,n)
    Leetcode Letter Combinations of a Phone Number
    leetcode Reverse Nodes in k-Group
    leetcode Merge k Sorted Lists
    word ladder
  • 原文地址:https://www.cnblogs.com/cuijunfeng/p/10991788.html
Copyright © 2011-2022 走看看