在c ++之后我试图学习一些java,我对我一直在研究的代码有疑问。我正在研究Fraction类,我陷入了reduce部分。由于该方法不让我同时返回“num”和“den”,我不得不返回“n” 这是我的方法
public double reduce() {
int n = num;
int d = den;
while (d != 0) {
int t = d;
d = n % d;
n = t;
}
int gcd = n;
num /= gcd; //num = num / greatestCommonDivisor
den /= gcd; //den = den / greatestCommonDivisor
return n;
}
我正在尝试“return num,den;”但它不会让我。
这就是我得到的
to reduced test for 100/2 is 2.0
to reduced test for 6/2 is 2.0
我跑的时候
System.out.println("to reduced test for " + f4.toString() + " is " + f4.reduce());
System.out.println("to reduced test for " + f6.toString() + " is " +f6.reduce());
为什么当我应该得到50/1和3/1时,我得到2?如果IDE允许我同时返回num和den,那会修复它吗?
由于
答案 0 :(得分:3)
Java没有本地方法可以做到这一点,你只能返回一个对象或原语。这有两个选择:
返回长度为2的数组。
public int[] reduce()
{
...
return new int[]{num, den};
}
返回包含两个数字的包装类的对象。
public Fraction reduce()
{
...
return new Fraction(num, den);
}
答案 1 :(得分:0)
看起来您的reduce
方法正在修改对象。目前还不清楚你想要归来的是什么。如果你想让分数返回自己,那么return this;
,方法在声明中返回Fraction
。