Implement a very minimal BigRational class. A BigRational stores a numerator and a denominator. For the purposes of this assignment, you may assume that there are no negative numbers, no zero denominators, etc. For this assignment you need to only implement the following methods:
The internal data representation consists of two java.math.BigInteger objects representing the numerator and denominator, respectively. The rational number is always kept in reduced form.
class Assign1 { public static void main( String [ ] args ) { BigRational r1 = new BigRational( "123456789023466" ); // Denominator is 1 BigRational r2 = new BigRational( "1234567890234660", "10" ); BigRational r3 = new BigRational( "3", "4" ); BigRational r4 = new BigRational( "2", "3" ); BigRational r5 = r3.add( r4 ); // 17/12 BigRational r6 = new BigRational( "10", "120" ); // 1/12 System.out.println( r1.equals( r2 ) ); // Should be true! System.out.println( r5.add( r6 ) ); // 3/2 System.out.println( r5 ); // 17/12 } }
Here is a sketch of BigRational.
import java.math.BigInteger; public class BigRational { /* * Constructor, assumes no funny stuff, so no error checks. * Reduces to lowest form by dividing numerator * and denominator by their gcd. */ public BigRational( String n, String d ) { numerator = new BigInteger( n ); denominator = new BigInteger( d ); reduce( ); } private void reduce( ) { BigInteger gcd = numerator.gcd( denominator ); numerator = numerator.divide( gcd ); denominator = denominator.divide( gcd ); } // Additional constructors at your discretion /* * Returns a new BigRational representing this+other * Make sure to reduce */ public BigRational add( BigRational other ) { } public String toString( ) { } public boolean equals( Object other ) { } private BigInteger numerator; private BigInteger denominator; }