Я думаю, что если вы будете отслеживать числа как числитель и знаменатель (неправильные дроби - числители больше, чем знаменатели - также), это упростит вашу задачу:
public class myFraction {
int numerator;
int denominator;
... constructors and methods ...
}
Затем, когда вы захотите сделать сложение и вычитание, вы сможете быстрее найти ЖК-дисплей и работать в одном представлении.
Если вы хотите отобразить его в виде строки, вы можете легко найти количество целых делений [т.е. пол (числитель / знаменатель)] и вы можете найти остаток, используя любой модуль:
numerator % denominator + "/" + denominator
или вы можете сохранить полученное значение от пола (числитель / знаменатель) и вычесть его из необработанного деления, что даст вам дробный компонент (0 <= x <1), т. Е. </p>
int myDivision = numerator/denominator;
int myFloor = floor(myDivision);
int fracComponent = myDivision - myFloor; //a number between 0 and 1
int mixedNumerator = fracComponent * denominator; //the numerator of your mixed part
дисплей выглядит как
myFloor + " " + mixedNumerator + "/" + denominator //i.e. 3 1/3
Калькулятор, который я использовал давным-давно, когда изучал алгебру, отображал смешанную дробь и показывал ответ как 3u1 / 3 (для «единиц»)
Есть несколько способов уменьшить количество операций, чтобы получить все необходимые факты из числа. Вы делаете манипуляции с десятичными числами, которые вы должны превратить в смешанные дроби, или вы начинаете с нуля для ввода?
Я не знаю ни одного API на основе Java, который имеет эту встроенную функциональность, но это не так сложно реализовать самостоятельно и, безусловно, является хорошим упражнением