您的位置:首页 > 编程语言 > Java开发

由一次java作业 引起的思考

2012-03-27 00:24 656 查看
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);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: