0
我被要求在Java中切换对象数组中的最大值和最小值。我写了我的代码,这似乎是合理的,但由于某些原因,值不切换?我不太清楚我的代码有什么问题,有人能指出我的方向吗?谢谢!!在Java中切换对象数组中的最小值和最大值
这是我的代码:
public class Measurables
{
/**
Swaps the values with the smallest and largest measure.
@param objects an array of objects of a class that implements the
Measurable interface.
*/
public static void swapMinAndMax(Measurable[] objects)
{
Measurable largest = objects[0];
Measurable smallest = largest;
for (int i = 1 ; i < objects.length ; i++)
{
Measurable current = objects[i];
if (largest.getMeasure() < current.getMeasure())
{
largest = current;
}
if (smallest.getMeasure() < current.getMeasure())
{
smallest = current;
}
Measurable temp = largest;
largest = smallest;
smallest = temp;
}
}
}
这是我所得到的,当我运行测试仪:
Testers
Running Tester.java
fail
[Uruguay, Thailand, Belgium]
Expected: [Uruguay, Belgium, Thailand]
Running Tester2.java
fail
[BankAccount[balance=1000.0], BankAccount[balance=3000.0], BankAccount[balance=2000.0]]
Expected: [BankAccount[balance=3000.0], BankAccount[balance=1000.0], BankAccount[balance=2000.0]]
Running Tester3.java
pass
[Uruguay]
Expected: [Uruguay]
您不保存交换的数组。 您正在测试每个值,但是不会按照您想要的方式返回数组排序 – sheplu
要扩展sheplu的评论:不需要返回数组,您可以对其进行修改。但是你不会改变这些项目,只是你指向的局部变量。即最后做'objects [largest_index] =最小;对象[smallest_index] =最大;'。 (你还需要跟踪这些索引。) – user2478398
我认为你可以使用[排列]方法[在Arrays类中](http://docs.oracle.com/javase/8/docs/api/的java/UTIL/Arrays.html#排序-T:A-java.util.Comparator-)。只需传递数组和一个lambda表达式,以指示值何时比其他值大 –