JAVA上机作业
文本统计器:
1.创建一个类,实现统计文本文件中各类字符和字符串的个数的功能,要求实现:
(1) 按字符统计,输出各个字符的数量;
(2) 按单词统计,输出各个单词的数量;
2.在1(2)的基础上,实现一个类Keywordidentifier读入一个java程序源文件,输出各个关键字的个数。
(注意,注释中出现的关键字不计入关键字个数)
也没看java几天。呵呵。 用Map一切都解决了,都不带的思考。把Map看看之后,很快就把它给解决掉了。其实吧,我觉得学完了C 和C ++之后,再来学java,毫无压力,主要他们属于同一派系的,记得高手说过,老学一个派系的语言,学得太多也没用,应该拓展来学,比如再高点脚本呀或者其它的什么语言。那样才能学到更多的东西。总之,还是那句话,精通算法和数据结构,关于语言的东西都是相同的。所以java还是边用边学吧。没必要专门又去学了。(个人见解)
今天还发现个问题。最近我做ACM题老喜欢看别人的思路,看别人的代码,有错了就去对照别人的。今天发现我的代码调试能力都下降了!!!尼玛不行啊,这可是个不好的习惯!!主要是我太急于求成了,没有自己好好思考,好好调试。所以要调整好心态,多思考。AC的代码只能说是我们的参考,不能一出现问题就去拿它的来对照,那样你永远也不会有长进的。知道么??!!必须改正这个坏习惯。
还是上代码来吧。
import java.io.*; import java.util.*; public class CalculateWords { // 打开哈希表 public static HashMap<Character,Integer> map=new HashMap<Character,Integer>(); public static HashMap<String ,Integer> has = new HashMap<String ,Integer> (); public static HashMap<String ,Integer> key = new HashMap<String ,Integer> (); // 统计字符的个数 public static HashMap<Character,Integer> CharCounter(String s){ for(int i=0; i<s.length(); i++) { Character c=s.charAt(i); Integer count=map.get(c); map.put(c,count==null?1:count+1); } return map; } //统计单词的个数 public static void WordCounter(String str) { String[] slist = str.split("\\b"); for (int i = 0; i < slist.length; i++) { if (!has.containsKey(slist[i])) { // 若尚无此单词 has.put(slist[i], 1); } else { //如果有,就在将次数加1 has.put(slist[i],has.get(slist[i])+1 ); } } } //统计关键字的个数 public static void Keywordidentifier(String s) { String[] keyword={"public","static","int","if","else", "for","class","break","return"}; String[] slist = s.split("\\b"); for (int i = 0; i < slist.length; i++) { for(String item:keyword) { if(item.equals(slist[i])) { if(!key.containsKey(slist[i])) { key.put(slist[i], 1); } else { key.put(slist[i],key.get(slist[i])+1); } break; } } } } public static void main(String[] args)throws IOException { long filePoint=0; String s; RandomAccessFile file=new RandomAccessFile("in.txt", "r"); long fileLength=file.length(); //获取文件长度 while(filePoint<fileLength) { s=file.readLine(); //读取一行字符,并移动文件指针 //统计每个字符的频率 CharCounter(s); //统计每个单词的频率 WordCounter(s); //统计关键字 Keywordidentifier(s); filePoint=file.getFilePointer(); } System.out.println(map); System.out.println(has); System.out.println(key); } }