diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/discord.xml b/.idea/discord.xml
new file mode 100644
index 0000000..8cf359d
--- /dev/null
+++ b/.idea/discord.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..8c5967f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Fraction.java b/Fraction.java
index 05da54d..25354f7 100644
--- a/Fraction.java
+++ b/Fraction.java
@@ -1,133 +1,164 @@
+/**
+ * Fixed the Fraction clas attributes
+ *
+ * Fixed the toString and toDouble
+ *
+ * Added Arithmetic operations for 2 fractions
+ * */
+public class Fraction {
+ private int numerator;
+ private int denominator;
-/*
- * f1 = Fraction(1,2)
- * class Fraction:
- * __init__(self, numerator, denominator):
- * self.numerator = numerator
- * self.denominator = denominator
- */
-public class Fraction
-{
- //fields - variables associated with a class
- long numerator;
- long denominator;
-
- //constructor
- public Fraction(long numerator, long denominator)
- {
+
+ /**
+ * Constructs a fraction with 0 as numerator and 0 as denominator
+ * */
+ public Fraction(){
+ this.numerator = 0;
+ this.denominator = 0;
+ }
+
+ /**
+ * Constructs a fraction with numerator assigned to numerator, and denominator assigned to denominator
+ * */
+ public Fraction( int numerator, int denominator){
this.numerator = numerator;
this.denominator = denominator;
}
-
- public Fraction(String f)
- {
- //f is in the format of "numerator/denominator" so
- //somehow (using only what we have learned in class)
- //divide the string and set the numerator and denominator
- String numString = "";
- int pos = 0;
- while(f.charAt(pos) != '/')
- {
- numString = numString + f.charAt(pos);
- pos = pos + 1;
- }
-
- pos = pos + 1; //skips past the /
- String denomString = "";
- while(pos < f.length())
- {
- denomString = denomString + f.charAt(pos);
- pos = pos + 1;
- }
- this.numerator = this.stringToInt(numString);
- this.denominator = this.stringToInt(denomString);
+
+ /**
+ * Returns the numerator of the fraction
+ * */
+ public int getNumerator(){
+ return numerator;
+ }
+
+ /**
+ * Returns the denominator of the fraction
+ * */
+ public int getDenominator(){
+ return denominator;
}
-
- static Fraction buildFraction(long numerator, long denominator)
- {
- return new Fraction(numerator, denominator);
+
+
+ /**
+ * Sets the numerator of the fraction
+ * */
+ public void setNumerator(int numerator){
+ this.numerator = numerator;
}
-
- //methods
- public Fraction add(Fraction f)
- {
- //adds f to "this" Fraction and returns
- //a new Fraction object that is the sum
- //of the two
- long denom = this.denominator * f.denominator;
- long num = (this.denominator * f.numerator) +
- (f.denominator * this.numerator);
- Fraction answer = new Fraction(num, denom);
- return answer;
+
+ /**
+ * Sets the denominator of the fraction
+ * */
+ public void setDenominator(int denominator){
+ this.denominator = denominator;
}
-
- public void reduceEuclidean()
- {
- long a = this.numerator;
- long b = this.denominator;
- long t;
- while(b != 0)
- {
- t = b;
- b = a % b;
- a = t;
- }
- //a is now our GCD of numerator and denominator
- this.numerator = this.numerator / a;
- this.denominator = this.denominator / a;
+
+ /**
+ * Computes the Greatest Common Divisor(GCD) using Euclid's algorithm
+ * */
+ private int computeGCD(int firstNum, int secondNum){
+ if (firstNum == 0)
+ return secondNum;
+
+ return computeGCD(secondNum % firstNum, firstNum);
+ }
+
+ /**
+ * Returns a string showing the fraction
+ * */
+ public String toString(){
+ return this.numerator + " / " + this.denominator;
+ }
+
+ /**
+ * Returns the double value of the fraction
+ * */
+ public double toDouble(){
+ return (double) this.numerator / this.denominator;
+ }
+
+
+ /**
+ * Method that adds the two fractions
+ * */
+ public Fraction add(Fraction fraction){
+
+ int numAnswer = 0;
+ int denAnswer = 0;
+
+ denAnswer = (computeGCD(this.denominator, fraction.getDenominator()));
+
+ denAnswer = (this.denominator * fraction.getDenominator()) / denAnswer;
+
+ numAnswer = ((this.numerator) * (denAnswer/this.denominator)) + (fraction.getNumerator() * (denAnswer / fraction.getDenominator()));
+
+ Fraction additionAnswer = new Fraction(numAnswer, denAnswer);
+
+ return additionAnswer;
}
-
- public void reduce()
- {
- long smallest = this.numerator;
- if(this.denominator < smallest)
- {
- smallest = this.denominator;
- }
- //smallest is the smaller of the 2 numbers
- //Find the GCD (Greatest Common Divisor)
- while(smallest >= 1)
- {
- if(this.numerator % smallest == 0 &&
- this.denominator % smallest == 0)
- {
- //we have found the GCD, it is smallest
- this.numerator = this.numerator / smallest;
- this.denominator = this.denominator / smallest;
- return; //I have found and applied the GCD, so kill the method
- }
- else
- {
- smallest = smallest - 1;
- }
- }
+
+ /**
+ * Method that subtracts the two fractions
+ * */
+ public Fraction subtract(Fraction fraction){
+
+ int denAnswer = 0;
+ int numAnswer = 0;
+
+ denAnswer = (computeGCD(this.denominator, fraction.getDenominator()));
+
+ denAnswer = (this.denominator * fraction.getDenominator()) / denAnswer;
+
+ numAnswer = ((this.numerator) * (denAnswer/this.denominator)) - (fraction.getNumerator() * (denAnswer / fraction.getDenominator()));
+
+ Fraction subtractionAnswer = new Fraction(numAnswer, denAnswer);
+
+ return subtractionAnswer;
}
-
- private int stringToInt(String dec)
- {
- int sum = 0;
- int place = 1;
- String map = "0123456789";
- for(int i = dec.length()-1; i >= 0; i = i - 1)
- {
- sum = sum + (place * map.indexOf(dec.charAt(i)));
- place = place * 10;
- }
- return sum;
+
+ /**
+ * Method that multiplies the two fractions
+ * */
+ public Fraction multiplyBy(Fraction fraction){
+ int numAnswer = 0;
+ int denAnswer = 0;
+
+ numAnswer = (this.numerator * fraction.getNumerator());
+ denAnswer = (this.denominator * fraction.getDenominator());
+
+ Fraction multiplicationAnswer = new Fraction(numAnswer, denAnswer);
+
+ return multiplicationAnswer;
}
- //this overrides the default toString method we inherited
- //from the Object class and allows us to do our own thing
- //historic function - returns a value
- public String toString()
- {
- return this.numerator + "/" + this.denominator;
+
+ /**
+ * Method that divides the two fractions
+ * */
+ public Fraction divideBy(Fraction fraction){
+ int numAnswer = 0;
+ int denAnswer = 0;
+
+ numAnswer = (this.numerator * fraction.getDenominator());
+ denAnswer = (this.denominator * fraction.getNumerator());
+
+ Fraction divisionAnswer = new Fraction(numAnswer, denAnswer);
+
+ return divisionAnswer;
}
-
- //historic procedure - does NOT return a value
- public void display()
- {
-
- System.out.println(this.numerator + "/" + this.denominator);
+
+
+ /**
+ * Reduces a fraction into its lowest form
+ * */
+ public Fraction reduceFraction(){
+ int GCD = 0;
+
+ GCD = computeGCD(this.numerator, this.denominator);
+
+ Fraction reducedFraction = new Fraction((this.numerator / GCD), (this.denominator / GCD));
+
+ return reducedFraction;
}
-
}
diff --git a/FractionTest.iml b/FractionTest.iml
new file mode 100644
index 0000000..b107a2d
--- /dev/null
+++ b/FractionTest.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file