Java如何返回两个变量?

时间:2014-02-05 23:52:12

标签: java return

在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,那会修复它吗?

由于

2 个答案:

答案 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