2012-04-07 9 views
0

私は昇順ソート7配列を求めています。そのうちの1つの値に基づいて、最終的な配列をメソッド内でループを使って印刷します。配列値はユーザによって入力され、少なくとも1セットのデータを含むが、5セット以下である。Java他の配列に基づいて複数の配列をソート

私のコードは以下の通りですが、これを使用するように要求されている選択ソートの基本構造は、単純な配列である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; 
     } 

} 

実行例

[Line #] [Principal Amount] Interest rate term simple monthly  weekly daily 
1   $1,375.00    1.18%   7 9.4244 9.4522  9.4557 9.4567 
2    $100.00     3.25%   6  1.625 1.636  1.6377 1.6382 
3    $100.00     3.25%   12  3.25 3.2988  3.3023 3.3032 

[Line #] [Principal Amount] Interest rate term simple monthly weekly daily 
1    $100.00     3.25%  6  1.62 1.636  1.6377 1.6382 
2    $100.00     3.25%  12  3.25 3.2988 3.3023 3.3032 
3   $1,375.00     1.18%  7  9.4244 9.4522 9.4557 9.4567 
+2

Javaライブラリの組み込みソートを使用するのではなく、独自の選択ソートを書くのはどうですか?この宿題ですか? –

+0

確かに、私はそれに固執しています。すべての配列を一つずつ並べ替えるこの部分を除いて、すべて完了しました。 –

+0

ここに宿題に関する質問を投稿することはできますが、これを最初にお読みください:http://meta.stackexchange .com/questions/10811/how-to-ask-and-answer-homework-questions –

答えて

1

一つの簡単な方法は、あなたがsimpの要素を交換されるたびにすべての配列内の要素を交換することです。 OOの方法は、メンバーとしてamount, iRate, term...を持つオブジェクトを持ち、これらのオブジェクトの配列をソートすることです。

+0

このように乱雑に見えるかもしれませんそれは私が必要なもののために働いたが、私はそれをすべてきれいに表示しようとしている間にメソッドを呼び出した後もまだ問題が残っていたが、それは大丈夫だ。 –

0

あなたは内部のすべてのフィールドを持つクラスを作成することができます。

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); 
     } 
    } 

を次に、あなたの7つの配列に基づいて、エンティティの配列を作成し、使用して、それを並べ替えますArrays.sort() 最後に、データをダブルスの配列にコピーしたり、内容を直接印刷したりすることができますエンティティ[]から。

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

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

. 
. 
. 

これが最もエレガントな方法ではありません。既存のコードを使用してそれを行うには

関連する問題