2014-05-12 105 views
0

我必須輸入7個值,代表距離。必須按升序排序進行交換排序。程序來排序雙陣列與平行陣列運行

我還設置了一個並行數組以跟蹤一週中的幾天,以便在輸出排序數據時列出相應的工作日。

我可以排列沒有問題的數組,但是當我輸入日期時,它將按照我輸入它的順序打印出來,而不是用相應的值輸入。我無法弄清楚如何在排序後使用相應的值輸入日期。我知道我的邏輯是關閉的。提前致謝!

輸出示例:
週四
8公里 7公里上週二
週一
4公里,等等...

import java.io.*; 
import java.util.*; 
public class exchangeSort 
{ 
public static void main() 
{ 
    Scanner kbReader= new Scanner (System.in); 
    double dist []= new double [7]; 
    String days []= new String [7]; 

    for (int i=0; i<dist.length; i++) 
    { 
     System.out.println("Enter distance"); 
     dist[i]= kbReader.nextDouble(); 
     System.out.println("Now enter a day"); 
     days[i]= kbReader.next(); 
    } 
    System.out.println(" "); 

    sort (dist); 
    for (int i=0; i<days.length; i++) 
    { 
     System.out.println(dist[i] + " km on " + days[i]); 
    }   
} 
public static void sort (double num []) 
{ 
    int i, j; 
    double temp; 
    for (i=0; i< num.length-1; i++) 
    { 
     for (j=i+1; j <num.length; j++) 
     { 
      if(num[i] > num[j]) 
      { 
       temp = num[i]; 
       num[i] = num[j]; 
       num[j] = temp; 
      } 
     } 
    } 
} 
} 

回答

2

當你交換陣列numbers的元素,交換

public static void sort (double num [], String[] labels) 
{ 
    int i, j; 
    double temp; 
    for (i=0; i< num.length-1; i++) 
    { 
     for (j=i+1; j <num.length; j++) 
     { 
      if(num[i] > num[j]) 
      { 
       temp = num[i]; 
       num[i] = num[j]; 
       num[j] = temp; 
       // ----------------- here ------------------- 
       String tmp = labels[i]; 
       labels[i] = labels[j]; 
       labels[j] = tmp; 
      } 
     } 
    } 
} 

那麼你可以簡單PAS:陣列labels還的元素s的排序功能的日子:

sort (dist, days); 
+0

哇,我覺得有點愚蠢......謝謝! – sm15

+0

不客氣,很高興回答顯示一些努力的問題。 – Danstahr

0

使用地圖。這將雙重字符串連接到字符串,並且當您基於雙精度進行排序時,您總能得到正確的一天。然後,您可以按照您喜歡的方式對Map的鍵集進行排序,但對於double來說,最好使用TreeSet和Doubles自然排序。

關於Map的好處是它使你的代碼更加合乎邏輯,因爲雙打和日子真的在一起,所以它們應該一起存儲在一個數據結構中,這將使你的代碼更容易理解。

+0

我明白了。沒有那麼多的學習,但我想我知道接下來要學的東西了! – sm15

+0

閱讀java教程 - http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html –