我目前用一堆方法制作程序。在这种方法中,它是关于分数的。用户应该输入整数分子和分母,例如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;
答案 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。