该程序的目的是获取一个分数的两个用户输入,从用户接收一个运算符,然后获取第二个分数的另外两个用户输入。该程序必须检查两个分数中使用的数字是否在 0-99 之间,并且分母非零。该程序还必须确保用户输入有效的运算符(-、+、*、/)。
我现在面临的唯一问题是我的变量都没有被初始化,而且我不知道如何使输出看起来像这样:
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; }
}
}
也许你想进入OOP(面向对象编程):
Q x = new Q(1, 4);
Q y = new Q(1, 8);
Q z = x.plus(y);
System.out.println("%s + %s = %s%n", x, y, z);
(1 / 4) + (1 / 8) = (3 / 8)
public class Q {
final int numerator;
final int denominator;
public Q(int numerator, int denominator) {
int g = gcd(numerator, denominator);
this.numerator = numerator / g;
this.denominator = denominator / g;
}
@Override
public String toString() {
return String.format("(%d / %d)", numerator, denominator);
}
public Q plus(Q rhs) {
return new Q(numerator * rhs.denominator + rhs.numerator * denominator,
denominator * rhs.denominator);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)