Я бы не советовал иметь ваш wholeNumber
как часть вашего Fraction
класса.Вместо этого я бы сделал это Fraction
(wholeNumber/1
):
Fraction mixed1 = new Fraction(Integer.parseInt(Mixed1.getText()), 1);
Fraction fraction1 = new Fraction(Integer.parseInt(Num1.getText()), Integer.parseInt(Den1.getText()));
Fraction mixed2 = new Fraction(Integer.parseInt(Mixed2.getText()), 1);
Fraction fraction2 = new Fraction(Integer.parseInt(Num2.getText()), Integer.parseInt(Den2.getText()));
Тогда у вас есть только дроби, и вы можете умножить их
Fraction f1 = fraction1.mul(mixed1);
Fraction f2 = fraction2.mul(mixed2);
Тогда вы можете использовать вашивпоследствии исходный код переключателя / регистра.
Что касается дисплея, я бы сделал это следующим образом:
public String getResult() {
String returnString = this.numerator + "/" + this.denominator;
if (this.numerator >= this.denominator) {
int modulo = this.numerator % this.denominator;
if(modulo == 0) {
int divider = this.numerator / this.denominator;
returnString = String.valueOf(divider);
}
}
return returnString;
}
Выходы
Fraction(10, 2) -> 5
Fraction(9, 3) -> 3
Fraction(8, 3) -> 8/3
Fraction(5, 2) -> 5/2
Примечание1:
Как упомянул Stultuske в комментарии, вы, вероятно, не должны использовать toString
, поскольку это метод, который вы наследуете от Object
Но вы все равно можете переписать его следующим образом:
@Override
public String toString() {
return this.numerator + "/" + this.denominator;
}
Например, если ваш Fraction
равен 8/2
toString() returns `8/2`
getResultAsString() returns `2 * 5/4`
Примечание 2:
Не начинайте имена переменных спрописные буквы, например: mixed1
, а не Mixed1