Для этой конкретной задачи, поскольку ответ всегда возвращает s
:
....
return s;
....
return s && b;
....
return s && c;
....
return s && d;
....
, вы можете просто вернуть 2-е значение.Я использую 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");
}