IntroJava

十五:实战2-分式计算器

概述

通过前几节课我们学习了Java中对象类的属性,方法,构造方法,封装等相关知识,这节课通过一个分式计算器项目来练习Java类的知识。分式由两个部分组成:分子和分母,在本项目中需要定义两个类,Fraction类,是一个对象类,这个类中定义了分式的属性,构造方法和分式的运算方法。FrationCalculator类是一个客户类,这个类主要处理与用户的交互,调用Fraction类获取分式计算结果,并将结果返回给用户。

Fraction

属性

构造方法

在程序的后两个构造方法中,我们要尽量借助this关键字利用前一个构造方法来简化代码。

方法

方法名 参数 返回值 描述
getNumerator() none int 返回分式中numerator的值
getDenominator() none int 返回分式中denominator的值
toString() none String 以”numerator/denominator”的格式返回分式的值
toDouble() none double 计算分式的值,返回double类型的计算结果
add() Fraction other Fraction 返回与另一个分式相加以后的分式
subtract() Fraction other Fraction 返回与另一个分式相减以后的分式
multiply() Fraction other Fraction 返回与另一个分式相乘以后的分式
divide() Fraction other Fraction 返回与另一个分式相除以后的分式
equals() Object other boolean 检查两个分式是否相等
toLowestTerms() none none 对分式进行约分
gcd() int num, int den int 返回两个整数的最大公约数,定义为static方法

equals()
重写Object类的public boolean equals(Object other)方法。首先判断对象是否是Fraction类,然后判断传入的分式与当前分式是否相等。
注意: 1/2与2/4比较,结果返回true。
toLowestTerms()
将分式的分子与分母进行约分操作,更新分式numerator和denominator的属性值,保持分式整体的值不变。约分的关键是找到分子与分母的最大公约数,关于求最大公约数的算法,以下是辗转相除法的伪代码:

if a equals b
    return a or b;

find the reminder of a dived by b
if reminder equals zero
    return b
else
    set a to b
    set b to reminder

FractionCalculator

在这个类中,我们打印信息到控制台,接收用户从控制台输入的信息,对信息进行处理,并返回结果。

程序逻辑