PP7.4的编程过程:
分析思路
-
修改 RationalNumber 类,使其实现 Comparable 接口。为了实现比较,首先计算两个 RationalNumber 对象(分子和分母)的浮点数等价值,然后以0.0001为误差精度进行比较。编写一个 main 驱动方法,测试你的修改结果。
-
本题重点是实现 Comparable 接口,计算对象浮点值以万分之一为精度进行比较。
关键代码
- 首先,接口的方法名通常叫做 compareTo ,对象是 RationalNumber 对象:
public int compareTo(RationalNumber op2)
- 将 RationalNumber 对象转为等值的浮点值以便下一步的比较:
double nu1, de1, nu2, de2;
nu1 = numerator;
de1 = denominator;
nu2 = op2.getNumerator();
de2 = op2.getDenominator();
double sh1 = nu1 / de1;
double sh2 = nu2 / de2;
- 利用
if
语句进行关键的比较:
if (sh1 - sh2 >0.0001)
return 1;
else if (sh2 - sh1 > 0.0001)
return -1;
else
return 0;
修改完成!差点忘记了,添加implements Comparable
声明一下:
public class RationalNumber implements Comparable
- 驱动类测试部分:
RationalNumber r8 = new RationalNumber(1, 1000000);
RationalNumber r9 = new RationalNumber(2, 1000000);
if (r8.compareTo(r9) == -1)
System.out.println("r8 < r9");
else if (r8.compareTo(r9) == 1)
System.out.println("r8 > r9");
else
System.out.println("r8 = r9");
结果截图
所遇问题
- 做此作业时未认真学习
if
语句,不了解“是否相等”需要使用==
而使用了=
,编译多次错误。 - 本章中无接口实例,初次编程时没有头绪,网上查找过后没能发现需要加上
implements Comparable
,后来老师讲到了,修改后没有上传码云。
参考资料
- 《Java程序设计教程(第八版)》电子工业出版社
- 《使用码云和博客园学习简易教程》
- 《使用开源中国(码云)托管代码》