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;
  1. 测试程序代码
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:对类编写的相关知识还存在模糊、概念不清等情况,导致初期编程工作有阻碍。
  • 解决:查找资料,在编类时认真分析思考各个语句的作用,定义适合的方法名以便于调用。
  • 返回目录

代码链接


参考资料

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

  1. 《Java程序设计》第12周课堂实践总结

    <Java程序设计>第12周课堂实践总结 实践一 教材代码检查-p98 要求 修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 提交在IDEA或命令行中运行结查截 ...

  2. 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结

    20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...

  3. 《Java程序设计》第15周课堂实践总结

    <Java程序设计>第15周课堂实践总结 实践一 教材代码检查-p242 要求 在IDEA中或命令行中运行P242 StackTraceDemo2.java 代码运行结果和教材一致吗?为什 ...

  4. 20155233 《Java程序设计》 第十三周课堂练习总结

    20155233 <Java程序设计>第十三周课堂练习总结 测试题目 测试1 在IDEA中对P145 MathTool.java 使用JUnit进行单元测试,测试用例不少于三个,要包含正常 ...

  5. 20155233 《Java程序设计》 第十一周课堂练习总结

    20155233 <Java程序设计> 第十一周课堂练习总结 测试题目 1.修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形: 提交在IDEA或命令行 ...

  6. 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础

    最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天

  7. 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)

    20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  8. 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

    20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  9. 20145209刘一阳《JAVA程序设计》第八周课堂测试

    第八周课堂测试 1.下面代码中共有(C)个线程? public class ThreadTest { public static void main(String args[]){ MyThread ...

随机推荐

  1. 洛谷 P4175: bzoj 1146: [CTSC2008]网络管理

    令人抓狂的整体二分题.根本原因还是我太菜了. 在学校写了一个下午写得头晕,回家里重写了一遍,一个小时就写完了--不过还是太慢. 题目传送门:洛谷P4175. 题意简述: 一棵 \(n\) 个结点的树, ...

  2. imperva 非交互式导入导出配置

    非交互使用模式full_expimp.sh可以导出/导入手动使用交互式CLI 在root的命令行下执行: 例子:导出:# full_expimp.sh --operation=1 --pwd=密码 - ...

  3. Genymotion上不能安装APK软件的问题

    Genymotion模拟器不能安装APK的原因 官网给出的解释:Genymotion模拟器使用的是x86架构,在第三方市场上的应用有部分不采用x86这么一种架构,所以在编译的时候不通过,报“APP n ...

  4. 1->小规模集群架构规划

    "配置无人值守批量安装系统(Cobbler)" "搭建PPTP VPN/ NTP/Firewalld内部共享上网 " "搭建跳板机服务jumpserv ...

  5. 七、springboot整合Spring-data-jpa

    1.Spring Data JPA是什么 由Spring提供的一个用于简化JPA开发的框架.可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页.排序等一些常用的功能 1 ...

  6. github 优秀的开源项目

    https://github.com/wlcaption/AndroidMarket---- 这是手机应用商店,包含应用的下载,用户中心等内容 https://github.com/wlcaption ...

  7. 使用MongoDB命令工具导出、导入数据

    Windows 10家庭中文版,MongoDB 3.6.3, 前言 在前面的测试中,已经往MongoDB的数据库中写入了一些数据.现在要重新测试程序,数据库中的旧数据需要被清理掉,可是,又想保存之前写 ...

  8. 数据结构之队列(Python 版)

    数据结构之队列(Python 版) 队列的特点:先进先出(FIFO) 使用链表技术实现 使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类. 使用顺序表list实现 # 队列类的实现 cla ...

  9. ORA-12514: TNS:listener does not currently know of service …

    问题描述: 今天数据库查询时遇到问题,具体情形如下截图所示: 问题分析: 看错误明显是TNS监听有问题,要么配置错了,要么数据库没起来.但是当前数据库起来了,也能正常连接使用,因此 考虑被查询对象可能 ...

  10. group by 和 distinct 去重比较

    distinct方式就是两两对比,需要遍历整个表.group by分组类似先建立索引再查索引,所以两者对比,小表destinct快,不用建索引.大表group by快.一般来说小表就算建索引,也不会慢 ...