I'm writing a program wherein I define the class Function, and have methods to perform arithmetic operations with them. In the output, in my FractionDemo class, I run into problems trying to write the output, getting the @12f9de etc stuff. So I know I need to override the toString
function, but I'm running into a cannot find symbol error.
Here's my code:
Function:
public class Fraction
{
int numerator;
int denominator;
public Fraction(int numerator, int denominator)
{
this.numerator = numerator;
this.denominator = denominator;
}
public void setNumerator(int numerator)
{
this.numerator = numerator;
return;
}
public void setDenominator(int denominator)
{
this.denominator = denominator;
return;
}
public int getNumerator()
{
return numerator;
}
public int getDenominator()
{
return denominator;
}
public static Fraction add(Fraction fraction1, Fraction fraction2)
{
Fraction fraction3 = new Fraction(((fraction1.getNumerator() * fraction2.getDenominator()) + (fraction1.getDenominator() * fraction2.getNumerator())), (fraction1.getDenominator() * fraction2.getDenominator()));
return fraction3;
}
public static Fraction subtract(Fraction fraction1, Fraction fraction2)
{
Fraction fraction3 = new Fraction(((fraction1.getNumerator() * fraction2.getDenominator()) - (fraction1.getDenominator() + fraction2.getNumerator())), (fraction1.getDenominator() * fraction2.getDenominator()));
return fraction3;
}
public static Fraction multiply(Fraction fraction1, Fraction fraction2)
{
Fraction fraction3 = new Fraction((fraction1.getNumerator() * fraction2.getNumerator()), (fraction1.getDenominator() * fraction2.getDenominator()));
return fraction3;
}
public static Fraction divide(Fraction fraction1, Fraction fraction2)
{
if (fraction2.getNumerator() != 0)
{
Fraction fraction3 = new Fraction((fraction1.getNumerator() * fraction2.getDenominator()), (fraction1.getDenominator() * fraction2.getNumerator()));
return fraction3;
}
else throw new IllegalArgumentException("Division by Zero");
}
}
FractionDemo:
public class FractionDemo
{
public static void main(String[] args)
{
Fraction fraction1 = new Fraction(4,7);
Fraction fraction2 = new Fraction(5,6);
Fraction fractionSum = Fraction.add(fraction1, fraction2);
System.out.println(fractionSum);
Fraction fractionDif = Fraction.subtract(fraction1, fraction2);
System.out.println(fractionDif);
Fraction fractionProd = Fraction.multiply(fraction1, fraction2);
System.out.println(fractionProd);
Fraction fractionDividend = Fraction.divide(fraction1, fraction2);
System.out.println(fractionDividend);
}
public String toString()
{
return ("The result is: " + numerator + "/" + denominator);
}
}
Anyway, is there any way I can get the output to be correctly formatted? It says it can't find my variables in the toString section at the bottom of FractionDemo. No matter whether I use the variable names, a function call like [fractionSum.getNumerator], or anything. I'll say right away that I don't really understand the overriding toString thing, I'm pretty new to Java.
Let me know if there's anything I should add.