zoukankan      html  css  js  c++  java
  • 实验二

    一、

    (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);

    (2)编写单元测试进行测试;

    (3)用ElcEmma查看代码覆盖率,要求覆盖达到100%。

    (1)

    package com.lxb.cn;

    import java.io.BufferedReader;

    import java.io.FileReader;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    import java.util.Map;

    import java.util.TreeMap;

    import java.util.regex.Matcher;

    import java.util.regex.Pattern;

    public class Test1 {

    public static void main(String[] args) throws Exception {

    long time1 = System.currentTimeMillis();

    BufferedReader reader = new BufferedReader(new FileReader(

    "D:\wordtest.txt"));

    StringBuffer buffer = new StringBuffer();

    String line = null;

    while ((line = reader.readLine()) != null) {

    buffer.append(line);

    }

    reader.close();

    Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词

    String string = buffer.toString();

    Matcher matcher = expression.matcher(string);//

    Map<String, Integer> map = new TreeMap<String, Integer>();

    String word = "";

    int times = 0;

    while (matcher.find()) {// 是否匹配单词

    word = matcher.group();// 得到一个单词-树映射的键

    if (map.containsKey(word)) {// 如果包含该键,单词出现过

    times = map.get(word);// 得到单词出现的次数

    map.put(word, times + 1);

    } else {

    map.put(word, 1);// 否则单词第一次出现,添加到映射中

    }

    }

    /*

    * 核心:如何按照TreeMap 的value排序而不是key排序.将Map.Entry放在集合里,重写比较器,在用

    * Collections.sort(list, comparator);进行排序

    */

    List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(

    map.entrySet());

    /*

    * 重写比较器

    * 取出单词个数(value)比较

    */

    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 last = list.size() - 1;

    try{

    for (int i = last; i > last-10; i--) {

    String key = list.get(i).getKey();

    Integer value = list.get(i).getValue();

    System.out.print("Top"+i+" : ");

    System.out.println(key + " " + value);

    }

    }catch(Exception e){

    //System.out.println("");

    }

    long time2 = System.currentTimeMillis();

    System.out.print("耗时:");

    System.out.println(time2 - time1+"ms");

    }

    }

    二、

    (1)把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;

    (2)编写单元测试进行测试;

    (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。

    (1)

    package com.lxb.cn;

    import java.util.Scanner;

    public class Test2{

    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.print("请输入英文:");

    String str = input.nextLine();

    String[] strArr = str.split("\s+|[,]");

    StringBuffer result = new StringBuffer();

    for(int i = strArr.length -1;i >=0; i--){

    result.append(strArr[i] + " ");

    }

    result.setCharAt(str.length()-0, (char) 0);

    System.out.println("颠倒顺序后的结果为:"+result.toString());

    }

    }

  • 相关阅读:
    Unity5.0 手动激活
    日文“表” php 会报错
    U3D 精灵的点击监听
    Android 数据库ORM框架GreenDao学习心得及使用总结<一>
    Eclipse 打包过滤 Log.e
    Android SQLite系列
    Android Material Design调色板
    Android Studio系列教程六--Gradle多渠道打包
    Android 模块化编程之引用本地的aar
    使用 Chrome 来调试你的 Android App
  • 原文地址:https://www.cnblogs.com/zzdsbc/p/5393341.html
Copyright © 2011-2022 走看看