Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java基于另一个数组对多个数组进行排序_Java_Arrays_Sorting - Fatal编程技术网

Java基于另一个数组对多个数组进行排序

Java基于另一个数组对多个数组进行排序,java,arrays,sorting,Java,Arrays,Sorting,我希望根据其中一个数组的值对7个数组进行升序排序,然后使用方法内部的循环打印最终数组。数组值由用户输入,至少包含一组数据,但不超过5组 到目前为止,我的代码如下,它是选择排序的基本结构,因为我被要求使用它,我希望对数组simp(代表简单兴趣)进行升序排序,但我不知道如何让所有其他数组一起移动并保留值 有没有关于循环方法的想法 public static void sort(double[] amount, double[] iRate, int[] term, double[] simp, do

我希望根据其中一个数组的值对7个数组进行升序排序,然后使用方法内部的循环打印最终数组。数组值由用户输入,至少包含一组数据,但不超过5组

到目前为止,我的代码如下,它是选择排序的基本结构,因为我被要求使用它,我希望对数组simp(代表简单兴趣)进行升序排序,但我不知道如何让所有其他数组一起移动并保留值

有没有关于循环方法的想法

public static void sort(double[] amount, double[] iRate, int[] term, double[] simp, double[] month, double[] daily, double[] weekly)
  {

      for (int i=0;i<simp.length-1;i++)
      {
            int minindex=i;
            for (int j=i+1;j<simp.length;j++)
            {
                if(simp[minindex]>simp[j])
                    minindex=j;
            }
            double temp = simp[minindex];
            simp[minindex]=simp[i];
            simp[i]= temp;
      }

}

可以创建包含所有字段的类:

 class Entity implements Comparable<Entity> {
      double simp;
      double amount;
      double rate;
      ...
      // construct each instance taking the next line from 
      // the arrays or doubles

      // implement compareTo
      public int compareTo(Entity entity) {
         // compare only the field you need
         return Double.compare(simp, entity.simp); 
      }
   }
类实体实现了可比较的{
双simp;
双倍金额;
双倍费率;
...
//构造每个实例,从中获取下一行
//数组或双数组
//实施比较
公共整数比较(实体){
//只比较您需要的字段
返回Double.compare(simp,entity.simp);
}
}
然后基于七个数组构建一个实体数组,并使用
arrays.sort()

最后,您可以将数据复制回double数组,或者直接从实体[]打印内容。

使用现有代码执行此操作的一个简单方法是,每当您在
simp
中交换元素时,交换所有数组中的元素:

double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;

temp = iRate[minindex];
iRate[minindex]=iRate[i];
iRate[i]= temp;

.
.
.

这不是最优雅的方式。OO的方法是让一个拥有
amount、iRate、term…
成员的对象对这些对象的数组进行排序。

为什么要编写自己的选择排序实现,而不是只使用Java库中内置的排序?这是家庭作业吗?确实是,我被困在这上面了。我已经完成了所有的工作,除了把所有的数组从一个数组中排序这一部分。可以在这里发布家庭作业问题,但请先读一读:我已经看到了这一点,在过去的5天里我做出了真诚的努力。这里提供的完整代码看起来很凌乱,但它确实满足了我的需要,尽管在调用该方法并试图将其整齐地显示出来后,我仍然遇到了麻烦,但这没关系。
double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;

temp = iRate[minindex];
iRate[minindex]=iRate[i];
iRate[i]= temp;

.
.
.