计算分数的Java程序

标签 java html case lang

该程序的目的是为一个分数获取两个用户输入,接收来自用户的运算符,然后为第二个分数获取另外两个用户输入。该程序必须检查两个分数中使用的数字是否介于 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);
    }

关于计算分数的Java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261024/

相关文章:

html - 隐藏表格内的滚动条

html - 根据 Angular 6 中的条件更改 div 宽度

oracle - Case 表达式和 bool 值

java - 在java小程序中创建xml文档

java - 如何使用 keystore 中存储的自定义 key 执行 AES 加密?

Java RMI Netbeans 包

java - 我怎样才能保护自己免受 zipper 炸弹的伤害?

在 html 模板上附加/前置 div 的 javascript 逻辑

mysql - SQL case 语句 - 多个条件

按foreach行分组时的Mysql案例