如何在java中使用fraction

时间:2015-12-10 23:26:35

标签: java math methods fractions

我目前用一堆方法制作程序。在这种方法中,它是关于分数的。用户应该输入整数分子和分母,例如9/5(不是像3.2 / 1.4那样的小数)。

方法完成后,它应该将结果返回给main方法,在本例中为1_4 / 5。我遇到的问题是答案必须以字符串形式返回。无法使它工作..如果返回的整数或分数为0,它也应该以更好的方式处理"。

Haven没想到这一点,但是这是迄今为止我提出的小代码。也许它更容易理解这个问题。 提前谢谢!

public static String fraction(int numerator, int denominator){
        fractionQuota = numerator / denominator;
        fractionRest = numerator % denominator;
        return fractionQuota;

1 个答案:

答案 0 :(得分:1)

  

注意:我已经假设分子和分母都是正数,分母严格正数。代码"工作",但格式为-1_-4/5,这不是很好。

首先,我认为您希望规范化您的分数:减少它,使21/15首先返回7/5。您可以通过首先计算最大公共分隔符来完成此操作。我借了"我的own method

private static int gcd(int a, int b) {
    int t;
    while(b != 0){
        t = a;
        a = b;
        b = t%b;
    }
    return a;
}

现在我们有了这个,我们可以将分数标准化:

public static String fraction(int numerator, int denominator){
    int div = gcd(Math.abs(numerator),denominator);
    numerator /= div;
    denominator /= div;
    //TODO
    //...
}

接下来我们需要找到整体部分,这可以通过以下方式完成:

    int intPart = (numerator/denominator);

接下来我们可以用以下方法计算剩余部分:

    int remPart = numerator-intPart*denominator;

最后,我们使用String.format将所有内容放在String

    return String.format("%d_%d/%d",intPart,remPart,denominator);

所以方法如下:

public static String fraction(int numerator, int denominator){
    int div = gcd(Math.abs(numerator),denominator);
    numerator /= div;
    denominator /= div;
    int intPart = (numerator/denominator);
    int remPart = numerator-intPart*denominator;
    return String.format("%d_%d/%d",intPart,remPart,denominator);
}

演示:您可以使用this jDoodle