Целью программы является получение двух пользовательских входов для доли, получение оператора от пользователя, а затем получение еще двух пользовательских входов для второй фракции. Программа должна проверить, что числа, используемые в обеих фракциях, находятся в диапазоне от 0 до 99 и имеют ненулевой знаменатель. Программа также должна убедиться, что пользователь вводит действительный оператор (-, +, *, /).Java-программа для вычисления фракций
Единственная проблема, я столкнулся в настоящее время является то, что ни один из моих переменных не инициализируются, и что я не знаю, как сделать вывод выглядеть так:
1 1 3
--- + --- = ---
4 8 8
Вот код, я так далеко, любая помощь будет высоко ценится, потому что мои знания для использования Java минимальна:
import java.util.Scanner;
public class FractionCalculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n1;
int n2;
int d1;
int d2;
int n;
int d;
char o;
int m1,m2;
int tempN1, tempN2;
int lcm, x;
System.out.println("Enter a numerator for fraction 1: ");
n1 = in.nextInt();
System.out.println("Enter a denominator for fraction 1: ");
d1 = in.nextInt();
if (d1 > 0) {
System.out.println();
} else {
System.out.println("Invalid denominator");
System.exit(0);
}
System.out.println("Enter an operator: ");
o = in.next().toCharArray()[0];
System.out.println("Enter a numerator for fraction 2: ");
n2 = in.nextInt();
System.out.println("Enter a denominator for fraction 2: ");
d2 = in.nextInt();
if (d2 > 0) {
System.out.println();
} else {
System.out.println("Invalid denominator");
System.exit(0);
}
switch(o){
case '*':
n = n1 * n2;
d = d1 * d2;
break;
case '/':
n = n1 * d2;
d = n2 * d1;
break;
case '+':
int max=n1>d1?n1:d1;
int min=n1<d1?n1:d1;
for(int i=1;i<=min;i++)
x=max*i;
if (x%min==0)
lcm=x;
tempN1=n1*m1;
tempN2=n2*m2;
m1=lcm/d1;
m2=lcm/d2;
n = tempN1 + tempN2;
d = lcm;
break;
case '-':
n = tempN1 - tempN2;
d = lcm;
break;
default:
System.out.println("Illegal Operator: "+ o);
break; }
}
}
домашнее задание много ?? – jgr208
Возможный дубликат [Пропуск nextLine() после использования nextInt()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint) – StackFlowed
@ jgr208 Вопросы домашней работы являются технически приемлемыми, если они следуют обычным советам по StackOverflow. По общему признанию, формулировка этого вопроса может быть немного широкой, поскольку фактическое «заявление о вопросе» является немного двусмысленным. –