Java Add() and Multiply() methods returning 0/0 and 1/1? -


for homework i'm supposed use following driver output sum , product of 2 input fractions, both fraction , double.

the problem add() method created keeps returning "0/0 nan" , multiply() method keeps returning "1/1 1.0". i've been trying lot of different things can't figure out how methods overwrite new fractions driver.

here driver:

import java.util.scanner;  public class fractiondriver {      /**      * @param args      */     public static void main(string[] args)      {       scanner stdin = new scanner(system.in);       fraction c, d, x; // fraction objects        system.out.println("enter numerator; denominator.");       c = new fraction(stdin.nextint(), stdin.nextint());       c.print();        system.out.println("enter numerator; denominator.");       d = new fraction(stdin.nextint(), stdin.nextint());       d.print();        x = new fraction(); // create fraction number 0        system.out.println("sum:");       x.add(c).add(d);       x.print();       x.printasdouble();        x = new fraction(1, 1); // create fraction number 1        system.out.println("product:");       x.multiply(c).multiply(d);       x.print();       x.printasdouble();        system.out.println("enter numerator; denominator.");       x = new fraction(stdin.nextint(), stdin.nextint());       x.printasdouble();        } // end main   }  //end class 

here fraction class:

package ch6;  public class fraction  {     private int numerator;     private int denominator;      //*************************************************************      public fraction()     {      }      //*************************************************************      public fraction(int numerator, int denominator)     {         this.numerator = numerator;         this.denominator = denominator;     }    //**************************************************************      public int getnumerator()     {         return this.denominator;     }      //**************************************************************      public int getdenominator()     {         return this.denominator;     }      //**************************************************************      public fraction add(fraction c)     {         denominator = this.getdenominator() * c.getdenominator();         numerator = this.getnumerator() * c.getdenominator() + c.getnumerator() * this.getdenominator();         return new fraction (numerator, denominator);     }      //**************************************************************      public fraction multiply(fraction c)     {         int productnumerator = this.numerator * c.numerator;         int productdenominator = this.denominator * c.denominator;         return new fraction(productnumerator, productdenominator);     }       //**************************************************************      public void print()     {         system.out.println(this.numerator + "/" + this.denominator);     }      //**************************************************************      public void printasdouble()     {         system.out.println((double) this.numerator / this.denominator);     }  }  

you incorrectly representing value 0 numerator , denominator of 0 each. value, 0/0, indeterminate in math , produce nan in floating-point operations.

try mathematically correct zero, represented 0 numerator , 1 denominator.

// creates zero. public fraction() {     this.numerator = 0;  // line unnecessary, default 0.     this.denominator = 1; } 

additionally, in add method, returning new fraction, changing numerator , denominator of current fraction. multiply, you'll want create local variables store new numerator , new denominator, avoid changing current fraction.

// declare them "int" local variables. int denominator = this.getdenominator() * c.getdenominator(); int numerator = this.getnumerator() * c.getdenominator() +                c.getnumerator() * this.getdenominator(); 

incidentally, @marcb stated in comment, wrong:

public int getnumerator() {     return this.denominator; } 

change return numerator!


Comments