簡體   English   中英

在Java中切換對象數組中的最小和最大值

[英]Switching the smallest and largest value in an object array in 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]

您應該存儲元素的索引,以便確定最小和最大索引可以執行交換。 另外,您似乎已將比較換成最小的。 就像是,

public static void swapMinAndMax(Measurable[] objects) {
    int largest = 0, smallest = 0;
    for (int i = 1; i < objects.length; i++) {
        Measurable current = objects[i];
        if (objects[largest].getMeasure() < current.getMeasure()) {
            largest = i;
        }
        if (objects[smallest].getMeasure() > current.getMeasure()) {
            smallest = i;
        }
    }
    // Now swap, we know the indexes.
    Measurable temp = objects[largest];
    objects[largest] = objects[smallest];
    objects[smallest] = temp;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM