我正在写一个函数,我希望它返回两个整数作为结果。但是,我无法做到这一点。有人能帮助我吗?这是我最好的镜头
public static int calc (int s, int b, int c, int d, int g)
{
if (s==g)
return s;
else if (s+b==g)
return s && b;
else if (s + c==g)
return s && c;
else if (s+d==g)
return s && d;
else
System.out.println("No Answer");
}
答案 0 :(得分:11)
您可以让方法返回int
:
public static int[] calc (int s, int b, int c, int d, int g)
答案 1 :(得分:5)
制作一个“对”类并将其返回。
public class Pair<T,Y>
{
public T first;
public Y second;
public Pair(T f, Y s)
{
first = f;
second = s;
}
}
答案 2 :(得分:4)
创建一个有两个整数的小内部类。
private static class TwoNumbers {
private Integer a;
private Integer b;
private TwoNumbers(Integer a, Integer b) {
this.a = a;
this.b = b;
}
}
您可以创建该类的实例并返回该实例。
答案 3 :(得分:2)
对于此特定问题,由于答案始终返回s
:
....
return s;
....
return s && b;
....
return s && c;
....
return s && d;
....
你可以返回第二个值。我使用0来表示“只是s
”,因为第一种情况(if (s==g)
)可以被认为是if (s+0==g)
。如有必要,请使用与0不同的标记值。
public static int calc (int s, int b, int c, int d, int g)
{
if (s==g)
return 0;
else if (s+b==g)
return b;
else if (s+c==g)
return c;
else if (s+d==g)
return d;
else {
// System.out.println("No Answer");
// Probably better to throw or return a sentinel value of
// some type rather than print to screen. Which way
// probably depends on whether "no answer" is a normal
// possible condition.
throw new IndexOutOfBoundsException("No Answer");
}
}
如果没有抛出异常,那么s
始终是第一个结果:
try {
int result1 = s;
int result2 = calc(s, b, c, d, g);
} catch (IndexOutOfBoundsException ex) {
System.out.println("No Answer");
}
答案 4 :(得分:0)
Get-Command -Syntax
答案 5 :(得分:-4)
你为什么要这样做?如果你有这样的需要,你不能将你的返回类型更改为字符串,因为在字符串的情况下你可以在两个值之间有分隔符,这将有助于你提取值....比如10&amp; 30,
我同意这是一种错误的解决方法...我认为存在坚持原始数据类型的限制