2014-05-12 54 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 –