java - 在Java中切换对象数组中的最小值和最大值

标签 java arrays object

我被指示在 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;
}

关于java - 在Java中切换对象数组中的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449720/

相关文章:

java - 在 JDBCRealm 中使用带有散列密码的 tomcat 基本/摘要身份验证的方法?

java - 使用 Byte Buddy 的检测问题

java - Java 中的字符串和数组对象

java - 玩! Framework 2.0.3,i18n 错误,预期为 `=',但发现为 `-'

java - 开关编译错误

python - 如何解析数据集之间变化的数组?

c++ - 如何从 QTextEdit 中检索单个字符?

objective-c - 在 Objective-C 中创建一个整数属性数组

C# dll 中的 C# 转换异常

java - 让方法修改引用而不是新对象