第二次作业

|这个作业属于哪个课程|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("
|
");//换行('
')、回车('
')

        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('
',' ');
    s = s.replace('
',' ');
    s = s.replace('	',' ');
    
    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());  
    }  */
}

`
运行截图:

心得体会
本次作业涉及了如何设计内裤翻阅资料以及代码编程,比如命令接收参数解析字符串等,通过本次作业认识到自己的不足,但希望能够继续加油!

原文地址:https://www.cnblogs.com/Vennien/p/14612538.html