Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package calculator.datatypes.rational;
- import calculator.AbstractValue;
- import calculator.DivisionByZeroException;
- import calculator.OperationNotSupportedException;
- public class RationalValue extends AbstractValue {
- private int numerator;
- private int denominator;
- public RationalValue(int numerator, int denominator) {
- this.numerator = numerator;
- if (denominator != 0) {
- this.denominator = denominator;
- }
- else {
- throw new IllegalArgumentException("Division by zero");
- }
- }
- @Override
- public AbstractValue add(AbstractValue operand) throws OperationNotSupportedException {
- int num = ((RationalValue)operand).numerator;
- int denom = ((RationalValue)operand).denominator;
- return new RationalValue( numerator*denom + num*denominator , denominator*denom );
- }
- @Override
- public AbstractValue sub(AbstractValue operand) throws OperationNotSupportedException {
- int num = ((RationalValue)operand).numerator;
- int denom = ((RationalValue)operand).denominator;
- return new RationalValue( numerator*denom - num*denominator , denominator*denom );
- }
- @Override
- public AbstractValue mul(AbstractValue operand) throws OperationNotSupportedException {
- int num = ((RationalValue)operand).numerator;
- int denom = ((RationalValue)operand).denominator;
- return new RationalValue( numerator*num, denominator*denom );
- }
- @Override
- public AbstractValue div(AbstractValue operand) throws DivisionByZeroException, OperationNotSupportedException {
- int num = ((RationalValue)operand).numerator;
- int denom = ((RationalValue)operand).denominator;
- return new RationalValue( numerator*denom, denominator*num );
- }
- @Override
- public String toString() {
- return Double.toString(numerator) + "/" + Double.toString(denominator);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement