携带另一个元素并打印出来

时间:2019-05-01 03:05:02

标签: java

图块无法阐明我的问题, 所以这是我程序的一部分:

public static void selectionsort(int[] userID, double[] donation, PrintWriter output) {
    int min, swap;
    for (int i = 0; i < userID.length - 1; i++) {
        min = i;
        for (int m = i + 1; m < userID.length; m++) {
            if (userID[m] < userID[i]) {
                min = m;
                swap = userID[min];
                userID[min] = userID[i];
                userID[i] = swap;
            }
        }
        output.println(userID[i] + "   " + donation[i]);
    }
}

我的数组如下:

456             250.0
123            175.34
345            123.06

但是当我的方法转到

output.println(userID[i]+"   "+donation[i]);

它像这样打印出来:

123   250.0
345   175.34
456   123.06

我想保持ID号和捐款的匹配。例如,无论456移动到何处,456都应始终与250.00关联。我该如何解决?

1 个答案:

答案 0 :(得分:1)

问题是因为在该方法中,仅对userID数组进行了排序,而对donation数组没有进行相应的重新排序。并且userID数组元素和donation数组元素之间没有其他映射,因此两个数组元素的打印都不会显示以前的关联。

因此,在方法中,每当交换userID数组元素的位置时,也必须交换相应的donation数组元素的位置。可以按照以下步骤完成:

public static void selectionsort(int[] userID, double[] donation, PrintWriter output) {
    int min, swap;
    for (int i = 0; i < userID.length - 1; i++) {
        min = i;
        for (int m = i + 1; m < userID.length; m++) {
            if (userID[m] < userID[i]) {
                min = m;
                swap = userID[min];
                userID[min] = userID[i];
                userID[i] = swap;

                swap=donation[min];
                donation[min]=donation[i];
                donation[i]=swap;
            }
        }
        output.println(userID[i] + "   " + donation[i]);
    }
}