20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)

20172319 2018.04.11 《Java程序设计教程》第7周课堂测验

  • 课程:《程序设计与数据结构》
  • 班级:1723
  • 学生:唐才铭
  • 学号:20172319
  • 指导老师:王志强
  • 日期:2018.04.11
  • 必修/选修:必修

目录

  • 测试内容
  • 测试要求
  • 实验步骤
    • 前期准备
    • 需求分析
  • 代码实现及解释
  • 程序运行结果及代码截图
  • 测试过程及遇到的问题
  • 参考资料

测试内容

  • 完成编程项目PP7.4:具体参考《java程序设计教程》(第八版)
  • Compareble接口的实现

测试要求


实验步骤

前期准备

  • 敲好课本上的例7.3(RationalTester2.java-测试)及例7.4(RationalNumber2.java-类),编译运行看其是否有误,若有误,对照课本对两个代码一一进行排查,无误后即可开始着手编程项目。

需求分析

  1. 需要理解接口的基本知识
  2. 掌握如何实现接口
  3. 理解Comparable接口及其包含的compareTo方法(唯一一个方法)
  • 返回目录

代码实现及解释

  1. 实现接口的类要在类声明头部使用保留字implements,接着再给出接口名。在RationalNumber类的头部尾端加上implements Comparable<RationalNumber2>声明要实现Comparable接口。

    public class RationalNumber2 implements Comparable<RationalNumber2>

  2. 若类声明要实现某个接口,必须提供实现这个接口中所有方法的实现代码。因此,要完整地实现接口需要在RationalNumber2类中提供实现接口中所有方法的代码。public int compareTo(RationalNumber2 op2)
  3. 将RationalNumber2中的对象数值转化为浮点值,再与定义好的误差标准比较(理由:参考week5学习总结中的浮点数值比较时的较好方法)。
    double n1, n2, difference;
    
      n1 = (double) numerator / denominator;
      n2 = (double) op2.getNumerator() / op2.getDenominator();
      difference = Math.abs(n2 - n1);
      if(difference < 0.0001)
         return -1;
      else
         if (difference > 0.0001)
            return 1;
         else
            return 0;
  4. 测试程序代码
public class RationalTester2
{
   //----------------------------------------------------------------------
   // Creates some rational number objects and performs various
   // operations on them.
   //----------------------------------------------------------------------
   public static void main(String[] args)
   {
      RationalNumber2 r1 = new RationalNumber2(1, 3);
      RationalNumber2 r2 = new RationalNumber2(1, 9);
      RationalNumber2 r3, r4, r5, r6, r7;

      System.out.println("First rational number: " + r1);
      System.out.println("Second rational number: " + r2);
      if (r1.isLike(r2))
          System.out.println("r1 and r2 are equal.");
      else
          System.out.println("r1 and r2 are NOT equal.");

      if (r1.compareTo(r2) == 1 )
            System.out.println(" r1 > r2 ");
        else
            if (r1.compareTo(r2) ==-1)
            System.out.println(" r1 < r2 ");
        else
            System.out.println("r1 = r2");

      r3 = r1.reciprocal();
      System.out.println("The reciprocal of r1 is: " + r3);

      r4 = r1.add(r2);
      r5 = r1.subtract(r2);
      r6 = r1.multiply(r2);
      r7 = r1.divide(r2);

      System.out.println("r1 + r2: " + r4);
      System.out.println("r1 - r2: " + r5);
      System.out.println("r1 * r2: " + r6);
      System.out.println("r1 / r2: " + r7);

   }
}
  • 返回目录

程序运行结果及代码截图

  • 返回目录

测试过程及遇到的问题

  • 问题1:条件语句的未知及关系运算符的错误使用导致输出错误。
  • 解决:学习完条件语句,然后进行代码调试,找到不合理的地方进行修改。
  • 问题2:对类编写的相关知识还存在模糊、概念不清等情况,导致初期编程工作有阻碍。
  • 解决:查找资料,在编类时认真分析思考各个语句的作用,定义适合的方法名以便于调用。
  • 返回目录

参考资料

原文地址:https://www.cnblogs.com/Tangcaiming/p/8799258.html

时间: 2024-10-12 17:06:58

20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)的相关文章

20145118 《Java程序设计》第1周学习总结

20145118 <Java程序设计>第1周学习总结 教材学习内容总结 由于寒假在家已经安装了java开发工具,所以安装过程在这里不再赘述.这一周我开始了Java初学阶段,从Java的历史.演变到Java最基本的组成,其中遇到了一些有些相似的概念,在这里列举一下: Java SE:Java三大平台之一 JVM:Java虚拟机 JRE:Java执行环境 JDK:Java开发工具箱 API:application program interface JSR:java的正式标准规范文件 一些必备知识

20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中的声明的变量所定义.对象的操作可能改变该对象的状态.对象的操作由 类中声明的方法定义. 类的分析:类的成员(类的数据和方法):构造方法(给类赋初值):实例数据(变量声明的位置定义其作用域):UML类图(类及其对象关系可视化描述). 封装:(1) 可见性修饰符:public(公有):private(私有,只能从

20172319 2018.03.12-19 《程序设计与数据结构》第2周学习总结

学号 20172319 2018.03.12-19 <程序设计与数据结构>第2周学习总结 教材学习内容总结 1.字符串:基本定义:print与println方法的区别:字符串的拼接:转义序列的应用. 2.变量与赋值:变量:常量:赋值语句. 3.基本数据类型:四整二浮点一字符一布尔. 4.表达式:运算符的种类及其使用规则. 5.数据类型转换:基本数据类型间的转换(扩展及压缩):数据转换方式:赋值(只能扩展).提升.强制. 6.交互式程序:Scanner 类. 教材学习中的问题和解决过程 问题1:

20165103 2017-2018-2 《Java程序设计》第1周学习总结

20165103 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 第一章要点总结 java的地位.特点 安装JDK(windows和linux操作系统) 进行简单打java应用程序编写 了解不同编程风格 反编译 学习使用码云提交作业 教材学习中的问题和解决过程 问题1:ubuntu中无法使用 sudo apt-get安装JDK 问题1解决方案:在java官网上下载相应版本的安装包,参考Ubuntu16.04下Java环境安装与配置 代码调试中的问题和解决过程 问题

20165101刘天野 2017-2018-2 《Java程序设计》第1周学习总结

20165101刘天野 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java的地位 Java的特点 安装JDK Java应用程序开发步骤 反编译 安装Git 使用Git在码云中托管代码 教材学习中的问题和解决过程 问题1:如何在Ubuntu中安装Oracle JDK 问题1解决方案:参考文章<Ubuntu 14.04安装JDK1.8.0_25与配置环境变量> 问题2:如何使用Git托管代码 问题2解决方案:参考文章<使用码云和博客园学习简易教

20165201 2017-2018-2 《Java程序设计》第7周学习总结

20165201 2017-2018-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十一章 代码托管 上周考试错题总结 解析:B:一个子类只能有一个父类,但一个父类可以有多个子类 解析:A:abstract关键字不能应用于static.private或final 方法. E:不能有方法体 解析:A:应该是虚线.C:接口无法调用类中的其他的非接口方法 学习进度条 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长 目标 6000行 30篇 400小时 第

20165230 2017-2018-2 《Java程序设计》第8周学习总结

20165230 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章 java多线程机制 一个进程在其执行过程中,可产生多个线程.线程是比进程更小的执行单位 JVM保证每个线程都有机会使用CPU资源,等到Java应用程序中的所有线程都结束后才结束应用程序 线程状态与生命周期 使用Thread类及其子类的对象表示线程 调用start()方法将线程加入JVM管理队列.调用以后不能再让线程调用start()方法 run()方法规定了线程的具体使命.方法执行完毕后线

20165201 2017-2018-2 《Java程序设计》第8周学习总结

20165201 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章 连接数据库:Connection getConnection(java.lang.String, java.lang.String, java.lang.String) ,Connection getConnection(java.lang.String) 条件与排序查询: where 子语句 排序 order by 子语句对记录进行排序 order by <字段名> 更新 u

20172320 2017-2018-2 《Java程序设计》第八周学习总结

20172320 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 1.绑定多数情况下发生在编译阶段 2.被延迟的请求事件成为后绑定或动态绑定,后绑定的效率低于编译阶段的绑定效率 3.多态性引用:继承方式和接口方式 4.一个引用变量可以指向有继承关系的任何类的任何对象 5.实际将调用的方法版本取决于对象的类型而不是引用变量的类型 6.一个接口引用变量可以指向实现该接口的任何类的任何对象 7.选择法排序通过相继的将各值放在自己的最终位置,插入排序法是不断地将一个新元素