Я пишу программу, которая попросит пользователя ввести числитель и знаменатель двух дробей и спросит, какой математический метод использовать следующим образом:
System.out.printf("Numerator for the first fraction: ");
f1 [0] = input.nextInt();
System.out.printf("Denominator for the first fraction: ");
f1[1] = input.nextInt();
System.out.printf("Numerator for the second fraction: ");
f2[0] = input.nextInt();
System.out.printf("Denominator for the second fraction: ");
f2[1] = input.nextInt();
System.out.printf("Enter the operation (+, -, *, /): ");
op = input.next();
Предполагая, что я хочу добавить дроби, которые я только что ввел, программа сохраняет значения в массиве и передает их этому методу.
public static int[] addFractions(int[] f1, int[] f2) {
int[] result = new int[2];
result[0] = (f1[0] * f2[1]) + (f2[0] * f1[1]);
result[1] = f1[1] * f2[1];
return simplifyFraction(result); //simplifyFraction is just a method that simplifies the numbers using gcd
}
Вот что я использую для печати ответа.
addFractions(f1,f2);
System.out.printf("%d/%d %s %d/%d = %s",f1[0],f1[1],op,f2[0],f2[1],Arrays.toString(addFractions(f1,f2)));
Мой ответ, однако, выглядит так:
1/2 + 1/2 = [1, 1]
Что я делаю не так? Я хочу, чтобы мой вывод отображался как «1/1». Я могу справиться с остальной логикой, чтобы просто вывести числитель, если знаменатель равен 1, я просто не могу его правильно отформатировать.