Skip to content

Instantly share code, notes, and snippets.

@rebekah
Last active October 17, 2023 06:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rebekah/9baefa64f3143e5d923cd779a82ed102 to your computer and use it in GitHub Desktop.
Save rebekah/9baefa64f3143e5d923cd779a82ed102 to your computer and use it in GitHub Desktop.
class Rational{
private int numerator;
private int denominator;
int getNumerator() {
return numerator;
}
int getDenominator() {
return denominator;
}
Rational(int numerator, int denominator){
int gcd = gcdByEuclidsAlgorithm(numerator, denominator);
this.numerator = numerator / gcd;
this.denominator = denominator / gcd;
}
Rational(int numerator){
this(numerator, 1);
}
Rational(){
this(1, 1);
}
public static void main(String[] args){
Rational myRational = new Rational(20, 30);
myRational.printRational("");
}
String printRational(String prefix){
String rationalString = String.format("%s%d/%d", prefix, numerator, denominator);
System.out.println(rationalString);
return rationalString;
}
void negate(){
numerator = -1 * numerator;
}
void invert(){
int newDenominator = denominator;
denominator = numerator;
numerator = newDenominator;
}
double toDouble(){
double numeratorDouble = numerator;
double denominatorDouble = denominator;
double fraction = numeratorDouble/denominatorDouble;
return fraction;
}
static int gcdByEuclidsAlgorithm(int n1, int n2) {
if (n2 == 0) {
return n1;
}
return gcdByEuclidsAlgorithm(n2, n1 % n2);
}
Rational addFraction(Rational fraction2){
int numerator1 = this.numerator * fraction2.denominator;
int numerator2 = fraction2.numerator * this.denominator;
int denominator = this.denominator * fraction2.denominator;
int newNumerator = numerator1 + numerator2;
int newDenominator = denominator;
return new Rational(newNumerator, newDenominator);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment