第二次作业
|这个作业属于哪个课程|https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879|
|姓名学号 |文加宁 20188493 |
|这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879|
|这个作业的目标|<初步了解并掌握Gitee的使用并利用编程解决问题>|
|其他参考文献|《构建之法》 |
Github的项目地址:https://gitee.com/wen-jianing/dashboard/codes
PSP表格:
实验需要实现的基本需求
统计文件的字符数(对应输出第一行)。
统计文件的单词总数(对应输出第二行),单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
统计文件的有效行数(对应输出第三行):任何包含非空白字符的行,都需要统计。
统计文件中各单词的出现次数(对应输出接下来10行),最终只输出频率最高的10个
实验的解题思路与分析
统计Ascii码,汉字不考虑汉字,
统计文件的单词总数,单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
英文字母: A-Z,a-z
字母数字符号:A-Z, a-z,0-9
统计文件的有效行数:任何包含非空白字符的行,都需要统计。
统计文件中各单词的出现次数,最终只输出频率最高的10个。频率相同的单词,优先输出字典序靠前的单词。
按照字典序输出到文件result.txt
Git截图:
1. getcharNum()
2. getwordNum()
`for(int i = 0;i<everyword.length;i++)
{
if(everyword[i].length()<4)
{
continue;
}
else //符合长度的单词
{
int flag=0;
char[] ch = everyword[i].toCharArray();//每一个everyword数组内容拆分成字符数组
for(int j = 0;j<4;j++)
{
if(!(ch[j]>= 'A' && ch[j]<= 'Z' || ch[j]>= 'a' && ch[j]<= 'z'))
{
flag=1;
}
}
if(flag ==0 )
{
wordNum++;
}
}
}
**3. getlineNum()**
public int getlineNum()
{
String[] line = str.split("\n|\r");//换行('\n')、回车('\r')
for(int i=0; i<line.length;i++)
{
if(line[i].trim().isEmpty())
{
continue;
}
else
{
lineNum++;
}
}
return lineNum;
}
public List<Map.Entry<String, Integer>> getwordFreq()
{
wordFreq = new HashMap<String,Integer>();
String s = str;
s = s.replace('\n',' ');
s = s.replace('\r',' ');
s = s.replace('\t',' ');
String[] everyword = s.split(" ");//用空格作为分割
for(int i = 0;i<everyword.length;i++)
{
if(everyword[i].length()<4)
{
continue;
}
else
{
int flag=0;
char[] ch = everyword[i].toCharArray();
for(int j = 0;j<4;j++)
{
if(!(ch[j]>= 'A' && ch[j]<= 'Z' || ch[j]>= 'a' && ch[j]<= 'z'))//开头四位不全为字母
{
flag=1;
}
}
if(flag ==0 )//符合一个单词的标准
{
String key = everyword[i].trim().toLowerCase();//统一转换成小写
if (wordFreq.containsKey(key)){
int n=Integer.parseInt(wordFreq.get(key).toString())+1;
wordFreq.put(key,n);
}else {
wordFreq.put(key,1);
}
}
}
}
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(wordFreq.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override//降序排序
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
if(o1.getValue() == o2.getValue())
{
return o1.getKey().compareTo(o2.getKey());
}
return o2.getValue().compareTo(o1.getValue());
}
});
return list;
/* for (Entry<String, Integer> mapping : list) { //输出
System.out.println(mapping.getKey() + ":" + mapping.getValue());
} */
}
`
运行截图:
心得体会
本次作业涉及了如何设计内裤翻阅资料以及代码编程,比如命令接收参数解析字符串等,通过本次作业认识到自己的不足,但希望能够继续加油!