All the methods work perfect, except the 'add' method. It always returns a value with +1 in the numerator. For example, if the answer is 23/30, it will return 24/30. Can anyone help me figure out what I did wrong?
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String num1, denom1, num2, denom2;
System.out.println("Enter first fraction: ");
String userFraction = input.nextLine();
num1 = userFraction.substring(0, 1);
denom1 = userFraction.substring(2);
System.out.println("Enter second fraction: ");
userFraction = input.nextLine();
num2 = userFraction.substring(0, 1);
denom2 = userFraction.substring(2);
Fraction f1 = new Fraction(num1, denom1);
Fraction f2 = new Fraction(num2, denom2);
System.out.println((f1.add(f2)));
System.out.println((f1.subtract(f2)));
System.out.println((f1.multiply(f2)));
System.out.println((f1.divide(f2)));
}
}
public class Fraction {
private int numerator, denominator;
public Fraction(String num, String denom){
numerator = Integer.parseInt(num);
denominator = Integer.parseInt(denom);
}
public int getNumerator(){
return numerator;
}
public int getDenominator(){
return denominator;
}
public void setNumerator(int num){
numerator = num;
}
public void setDenominator(int denom){
denominator = denom;
}
public String toString(){
return numerator + "/" + denominator;
}
public Fraction add(Fraction f){
int num = numerator * f.getDenominator() +
f.getNumerator() + denominator;
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num + "", denom + "");
return result;
}
public Fraction subtract(Fraction f){
int num = numerator * f.getDenominator() -
f.getNumerator() * denominator;
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num + "", denom + "");
return result;
}
public Fraction multiply(Fraction f){
int num = numerator * f.getNumerator();
int denom = denominator * f.getDenominator();
Fraction result = new Fraction(num + "", denom + "");
return result;
}
public Fraction divide(Fraction f){
int num = numerator * f.getDenominator();
int denom = denominator * f.getNumerator();
Fraction result = new Fraction(num + "", denom + "");
return result;
}
}
thank you guys in advance :)
edit: problem solved - thanks Wim DC :)
Edited by Cruel Hand, 13 December 2011 - 04:47 AM.
problem solved


Sign In
Create Account


Back to top









