博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1
作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11110
作业目标 熟练 git 的使用以及熟悉开发流程
作业源代码 https://gitee.com/Icarus727/personal.git
学号 211806309
代码行数:140 行(含注释)
需求分析:0.5 h
编码时间:3 h

思路分解:

  1. 加载配置文件 total.properties

    • 配置文件加载到一个 hashMap 中便于后续计算时使用。

      Properties pp = new Properties();
      pp.load(new FileInputStream(filename));
      ...
      totalScore.put("before", Double.parseDouble(pp.getProperty("before")));
      ...
  2. 读取 small.html 和 all.html

  3. 解析 small.html 和 all.html

    • 使用字符串的方法进行分析,但是效率太差
因效率问题,后期更改思路,以下为思路更改方案:
  1. 寻找新的解析 html 代码的方法

    • 通过查询,找到一个专门用于 html 的类库 —— jsoupAPI

    • 使用 jsoup 自带方法读取 html 文件

      Jsoup.parse(new File(filename), "utf-8")

    • 通过浏览器查看代码块,发现所有活动的代码块如下:

      <div class="interaction-row" ... > ... </div>
    • 使用 jsoup 的函数 getElementsByClass("interaction-row") 将所有活动分离存储

    • 判断是哪种类型的活动和该活动的完成,可以使用 jsoup 中的 get()child() 来定位到里面的孩子节点,例如课堂完成:

      if( activities.get(i).child(1).child(0).toString().indexOf("课堂完成") != -1 ) { ... }
    • 再次查看网页代码,发现经验所在的内容如下

      <span style="color:#EC6941;">0 经验</span>
    • 找到经验值所在位置的相应节点分离出来,用 element.text() 的方法获取标签中的内容,再将内容放入 Scanner 中使用 nextDouble() 读出数字

    • 将读出来的经验统计起来

    • 结合之前配置文件读出的内容和云班课算法计算出最终分数:

自我总结:

这次作业收获颇多,get 到了一个可以用来解析 html 的库 jsoup 以后碰到类似的问题可以直接使用 jsoup。git 也是一个非常棒的工具,可以将自己的代码存到云端并且可以版本回溯,出了问题可以及时查看对比之前版本进行比较排查出问题代码,还能为自己的电脑省下不少空间。

参考资料:

最新文章

  1. Markdown学习
  2. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
  3. 如何定位Sharepoint网站集所在的w3wp进程
  4. tomcat实现ServletContext的addListener方法的源码解说(原创)
  5. python面试2
  6. Gradle tip #2: understanding syntax
  7. linux实践——内核编程 基础模块
  8. PIT,BL,AP,CP,CSC
  9. tftp使用方法
  10. ASP.NET - 分页
  11. 我们常说的 CAS 自旋锁是什么
  12. Linux下Zookeeper安装使用
  13. 安装Adobe时出现Adobe Application Manager丢失或损坏解决方法
  14. 第62节:探索Java中的网络编程技术
  15. docker保存、载入、导出、导入
  16. windos 开启openssl
  17. Glusterfs3.3.1DHT(hash分布)源代码分析
  18. LNMP结合discuz的配置
  19. Cortex-M3 and Cortex-M4 Memory Organization
  20. Qt5.3中qml ApplicationWindow设置窗口无边框问题

热门文章

  1. 机器学习之K均值算法(K-means)聚类
  2. Swagger 3.0 天天刷屏,真的香吗?
  3. RabbitMQ相关概念的理解
  4. Markdown tricks
  5. dubbo2.7.X版本带来的服务注册和服务调用方式改变
  6. [POJ 2821]TN&#39;s Kindom III(任意长度循环卷积的Bluestein算法)
  7. Spring中基于XML的声明式事务控制配置步骤
  8. C++ 设计模式 4:行为型模式
  9. 基于selenium微博个人主页视频下载
  10. 极客mysql13