我在pathfind上工作,我需要得到最少的vararg整数,我可以得到一个或多个整数。
我是创建的方法,返回最小值,但我的Leed开发人员说这不够好,我必须做一些重构并改进这个方法。这是我的代码:
public int getMinimalValue(int... arguments) {
if(arguments.length == 0)
throw new IllegalArgumentException("Method is called without arguments.");
int localMinimum = arguments[0];
for (int i = 1; i < arguments.length; i++)
if (arguments[i] < localMinimum)
localMinimum = arguments[i];
return localMinimum;
}
我不知道为什么这个方法总是返回最小值时不够好。我想找到另一个解决方案,但我被卡住了。请问有人帮帮我吗?
答案 0 :(得分:-1)
您的首席开发人员是对的。你的解决方案还不够好。
试试这个:
public int getMinimalValue(int firstArg, int... remainingArgs) {
int minimum = firstArg;
for (int arg : remainingArgs) {
if (arg < minimum) {
minimum = arg;
}
}
return minimum;
}
你的解决方案有很大问题!您没有注意到,当此方法将在没有参数的情况下使用时,您将获得异常而不是最小值。
如果对这种方法进行单元测试,测试将失败。
使用此解决方案,您可以获得以下好处:
传递JUnit测试的方法,总是返回最小值而不是抛出IllegalArgumentException(java.lang.IllegalArgumentException:方法被调用,不带参数。 - 来自你的代码)
您可以使用foreach循环