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表達式,以指示值何時比其他值大 –