Я занимаюсь школьным проектом, в котором я добавляю 2 фракции и должен упростить ответ. До сих пор у меня есть хороший код, но есть несколько примеров, когда определенные фракции не упрощаются должным образом. Например, 1/4 + 1/6 1 дают 5/6 вместо 5/12. Можете ли вы проверить мой код на наличие возможных ошибок или указателей?Упрощение доли, Java
public int num1, num2, denom1, denom2, numSum, denomAns, denomSimp, gcd;
public Fraction(int a1, int a2, int a3, int a4, int a5, int a6) {
this.num1 = a1;
this.num2 = a2;
this.denom1 = a3;
this.denom2 = a4;
this.numSum = a5;
this.denomAns = a6;
}
public void simplify() {
if (denom1 == denom2) {
denomAns = denom1;
numSum = num1 + num2;
} else {
denomAns = denom1 * denom2;
num1 = num1 * denom2;
num2 = num2 * denom1;
numSum = num1 + num2;
}
int tempNum = numSum, tempDenom = denomAns;
if (tempNum == 0) {
gcd = tempDenom;
} else {
while (tempDenom != 0) {
if (tempNum > tempDenom) {
tempNum = tempNum - tempDenom;
} else {
tempDenom = tempDenom - tempNum;
}
}
gcd = tempNum;
}
denomSimp = denomAns/gcd;
numSum = numSum/gcd;
}
Что вы уже пробовали отладки кода? –
Почему вы получаете 'denomAns',' denomSimp' и 'gcd' в конструкторе? Разве не вся идея вашей программы состоит в том, чтобы рассчитать последние три числа (некоторые как часть внутреннего «часового механизма»)? – MaxG
Я протестировал код с 1/4 и 1/6 и дал мне 5/12, https://ideone.com/YR2SoF –