Java如何返回两个变量?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21591178/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java how to return two variables?
提问by UniQuadrion
after c++ i am trying to learn some java, and i have a question about the code i have been working on. I am working on a Fraction class and i got stuck in reduce section. Since the method did not let me to return both "num" and "den", I had to return "n" This is my method
在 C++ 之后,我正在尝试学习一些 Java,并且我对我一直在研究的代码有疑问。我正在学习分数课程,但我陷入了减少部分。由于该方法不允许我同时返回“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;
}
I am trying to do "return num, den;" however it does not let me.
我正在尝试“返回 num,den;” 但是它不允许我。
and this is what i get
这就是我得到的
to reduced test for 100/2 is 2.0
to reduced test for 6/2 is 2.0
when i run
当我跑步时
System.out.println("to reduced test for " + f4.toString() + " is " + f4.reduce());
System.out.println("to reduced test for " + f6.toString() + " is " +f6.reduce());
Why do i get the 2 when when i am supposed to get 50/1 and 3/1 ? If the IDE let me return num and den at the same time, would that have fixed it?
为什么我应该得到 50/1 和 3/1 时得到 2?如果 IDE 让我同时返回 num 和 den,那会解决它吗?
Thanks
谢谢
采纳答案by Martijn Courteaux
Java has no native way of doing this, you only can return one Objector primitive. This leaves you two options:
Java 没有这样做的本地方式,您只能返回一个Object或原语。这给您留下了两个选择:
Return an array with length 2.
public int[] reduce() { ... return new int[]{num, den}; }
Return an object of a wrapper class containing the two numbers.
public Fraction reduce() { ... return new Fraction(num, den); }
返回一个长度为 2 的数组。
public int[] reduce() { ... return new int[]{num, den}; }
返回包含两个数字的包装类的对象。
public Fraction reduce() { ... return new Fraction(num, den); }
回答by rgettman
It looks like your reduce
method is modifying the object. It's unclear what exactly you want to return. If you want the fraction to return itself, then return this;
, with the method returning a Fraction
in the declaration.
看起来您的reduce
方法正在修改对象。目前还不清楚你到底想返回什么。如果您希望分数返回自身,则return this;
,该方法Fraction
在声明中返回 a 。