• 单词统计包括其续


    package 五月九号;
    
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Main {
    
    	public Main() {
    		// TODO 自动生成的构造函数存根
    	}
    
    	public static List<String> l = new ArrayList<String>();
    
    	public static void main(String[] args) throws IOException {
    		// TODO 自动生成的方法存根
    
    		// 无用词
    		l.add("the");
    		l.add("a");
    		l.add("is");
    		l.add("are");
    		l.add("she");
    		l.add("he");
    		l.add("and");
    		duanyu("D://piao.txt");
    		System.out.println();
    		int n = 0;
    		while (n != 6) {
    			Scanner shuru = new Scanner(System.in);
    			System.out.println("1.字母");
    			System.out.println("2.单词");
    			System.out.println("3.单词前多少个");
    			System.out.println("4.字母前多个");
    			System.out.println("5.增加无用单词");
    			System.out.println("6.退出");
    			System.out.println();
    			String str = "D://piao.txt";
    			n = shuru.nextInt();
    			switch (n) {
    
    			case 1:
    
    				zimu(str);
    				break;
    			case 2:
    				try {
    					danci(str);
    				} catch (IOException e) {
    					// TODO 自动生成的 catch 块
    					e.printStackTrace();
    				}
    
    				break;
    			case 3:
    				int x = 0;
    				x = shuru.nextInt();
    				try {
    					danci(str, x);
    				} catch (IOException e) {
    					// TODO 自动生成的 catch 块
    					e.printStackTrace();
    				}
    				break;
    			case 4:
    				x = shuru.nextInt();
    				zimu(str, x);
    				break;
    			case 5:
    				String b = shuru.next();
    				AddString(b);
    				break;
    			case 6:
    				System.out.println("退出成功");
    				break;
    			}
    		}
    	}
    
    	public static void duanyu(String s) throws IOException
    	{
    		BufferedReader br = new BufferedReader(new FileReader(s));
    
    		StringBuffer sb = new StringBuffer();
    		String text = null;
    		while ((text = br.readLine()) != null) {
    			sb.append(text);// 将读取出的字符追加到stringbuffer中
    		}
    		br.close(); // 关闭读入流
    		String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写
    		System.out.println(str);
    		String a="";//前
    		String b="";//后
    		char c=' ';
    		for(int i=0;i<str.length();i++)
    		{
    			//System.out.println(str.charAt(i));
    			if(str.charAt(i)!=c)
    			{
    				a=str.charAt(i)+"";
    			}
    			else
    			{
    				
    			}
    		}
    		
    	}
    	public static void danci(String s, int x) throws IOException {
    		{
    			BufferedReader br = new BufferedReader(new FileReader(s));
    
    			StringBuffer sb = new StringBuffer();
    			String text = null;
    			while ((text = br.readLine()) != null) {
    				sb.append(text);// 将读取出的字符追加到stringbuffer中
    			}
    			br.close(); // 关闭读入流
    
    			String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写
    			String[] words = str.split("[^(a-zA-Z)]+"); // 非单词的字符来分割,得到所有单词
    			Map<String, Integer> map = new HashMap<String, Integer>();
    
    			for (String word : words) {
    				if (map.get(word) == null) { // 若不存在说明是第一次,则加入到map,出现次数为1
    					map.put(word, 1);
    				} else {
    					map.put(word, map.get(word) + 1); // 若存在,次数累加1
    				}
    			}
    
    			// 排序
    			List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
    			Comparator<Map.Entry<String, Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {
    				public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) {
    					return (left.getValue().compareTo(right.getValue()));
    				}
    			};
    			// 集合默认升序升序
    			Collections.sort(list, comparator);
    			int i1 = 0;
    			for (int i = 0; i < list.size(); i++) {// 由高到低输出
    				if (returnString(list.get(list.size() - i - 1).getKey()).equals("")) {
    				} else {
    					i1++;
    					if (i1 <= x) {
    						System.out.println(list.get(list.size() - i - 1).getKey() + ":"
    								+ list.get(list.size() - i - 1).getValue());
    					}
    				}
    			}
    
    		}
    	}
    	
    	public static void danci(String s) throws IOException {
    		{
    			BufferedReader br = new BufferedReader(new FileReader(s));
    			StringBuffer sb = new StringBuffer();
    			String text = null;
    			while ((text = br.readLine()) != null) {
    				sb.append(text);// 将读取出的字符追加到stringbuffer中
    			}
    			br.close(); // 关闭读入流
    
    			String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写
    			String[] words = str.split("[^(a-zA-Z)]+"); // 非单词的字符来分割,得到所有单词
    			Map<String, Integer> map = new HashMap<String, Integer>();
    
    			for (String word : words) {
    				if (map.get(word) == null) { // 若不存在说明是第一次,则加入到map,出现次数为1
    					map.put(word, 1);
    				} else {
    					map.put(word, map.get(word) + 1); // 若存在,次数累加1
    				}
    			}
    
    			// 排序
    			List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
    
    			Comparator<Map.Entry<String, Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() {
    				public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) {
    					return (left.getValue().compareTo(right.getValue()));
    				}
    			};
    			// 集合默认升序升序
    			Collections.sort(list, comparator);
    
    			for (int i = 0; i < list.size(); i++) {// 由高到低输出
    				if (returnString(list.get(list.size() - i - 1).getKey()).equals("")) {
    
    				} else {
    					System.out.println(
    							list.get(list.size() - i - 1).getKey() + ":" + list.get(list.size() - i - 1).getValue());
    				}
    			}
    
    		}
    	}
    
    	public static void zimu(String str) {
    		double[] list = new double[26];
    		int[] c = new int[26];
    		for (int k = 0; k < 26; k++) {
    			list[k] = 0;
    		}
    		for (int k = 0; k < 26; k++) {
    			c[k] = k + 65;
    		}
    		String line = "";
    		int a = 0;
    		int b = 0;
    		int s = 0;
    		try {
    			FileReader fr = new FileReader(str);
    			Scanner in = new Scanner(fr);
    			while (in.hasNext()) {
    				line = in.nextLine();
    				// System.out.println(line);
    				for (int i = 0; i < line.length(); i++) {
    					a = line.charAt(i);
    
    					if (a >= 65 && a <= 90) {
    						b = a - 65;
    					}
    					if (a >= 97 && a <= 122) {
    						b = a - 97;
    					}
    					// System.out.println(b);
    					list[b] += 1;
    					s++;
    				}
    			}
    
    			for (int t = 0; t < 26; t++) {
    				list[t] = list[t] / s;
    
    				// System.out.println(list[t]);
    			}
    			int t, k;
    			double d;
    			int e;
    			for (t = 0; t < 25; t++) {
    				for (k = 0; k < 25 - t; k++) {
    					if (list[k] < list[k + 1]) {
    						d = list[k + 1];
    						list[k + 1] = list[k];
    						list[k] = d;
    
    						e = c[k + 1];
    						c[k + 1] = c[k];
    						c[k] = e;
    					}
    				}
    			}
    
    			for (t = 0; t < 26; t++) {
    				System.out.print((char) (c[t]) + "  ");
    				System.out.println(String.format("%.2f", list[t] * 100) + "%");
    			}
    		} catch (Exception e) {
    
    		}
    	}
    
    	public static void zimu(String str, int x) {
    		double[] list = new double[26];
    		int[] c = new int[26];
    		for (int k = 0; k < 26; k++) {
    			list[k] = 0;
    		}
    		for (int k = 0; k < 26; k++) {
    			c[k] = k + 65;
    		}
    		String line = "";
    		int a = 0;
    		int b = 0;
    		int s = 0;
    		try {
    			FileReader fr = new FileReader(str);
    			Scanner in = new Scanner(fr);
    			while (in.hasNext()) {
    				line = in.nextLine();
    				// System.out.println(line);
    				for (int i = 0; i < line.length(); i++) {
    					a = line.charAt(i);
    
    					if (a >= 65 && a <= 90) {
    						b = a - 65;
    					}
    					if (a >= 97 && a <= 122) {
    						b = a - 97;
    					}
    					// System.out.println(b);
    					list[b] += 1;
    					s++;
    				}
    			}
    
    			for (int t = 0; t < 26; t++) {
    				list[t] = list[t] / s;
    
    				// System.out.println(list[t]);
    			}
    			int t, k;
    			double d;
    			int e;
    			for (t = 0; t < 25; t++) {
    				for (k = 0; k < 25 - t; k++) {
    					if (list[k] < list[k + 1]) {
    						d = list[k + 1];
    						list[k + 1] = list[k];
    						list[k] = d;
    
    						e = c[k + 1];
    						c[k + 1] = c[k];
    						c[k] = e;
    					}
    				}
    			}
    
    			for (t = 0; t < 26; t++) {
    				if (t < x) {
    					System.out.print((char) (c[t]) + "  ");
    					System.out.println(String.format("%.2f", list[t] * 100) + "%");
    				}
    			}
    		} catch (Exception e) {
    
    		}
    	}
    
    	// 增加无用单词
    	public static void AddString(String b) {
    		l.add(b);
    	}
    
    	// 无用词表去除
    	public static String returnString(String s) {
    
    		boolean flag = true;
    
    		for (int i = 0; i < l.size(); i++) {
    			if (s.equals(l.get(i))) {
    				flag = false;
    			}
    		}
    		if (flag) {
    			return s;
    		} else {
    			return "";
    
    		}
    
    	}
    }
    

     还是以前那个问题就是写一个菜单加点限制。

  • 相关阅读:
    特性和属性
    装箱和拆箱的问题(NET1.1+)
    poj 1013 Counterfeit Dollar(模拟)
    poj 3686 The Windy's( KM算法 )
    二分匹配(匈牙利算法)
    poj 3273 Monthly Expense(二分)
    poj 2115 C Looooops(扩展欧几里德)
    poj 2400 Supervisor, Supervisee
    poj 2195 Going Home (KM算法)
    poj 2513 Colored Sticks(trie树 + 并查集 + 欧拉图)
  • 原文地址:https://www.cnblogs.com/gonT-iL-evoL-I/p/10845424.html
Copyright © 2020-2023  润新知