对多维数组进行排序,从最低到最高,只有第一个元素保持未排序

时间:2014-02-27 15:25:30

标签: java arrays sorting multidimensional-array

我一直在玩这个问题,试图理清这个多维数组,但我继续得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素外,一切都井然有序。排序数组中的第一个元素也是数组中排序之前的第一个元素,即sNamesLongitude [0] [0]。

字符串sNamesLongitude[2][306]数组有两行。第一行包含伦敦地铁站的名称,第二行保持其相应的经度。我正在尝试对阵列进行整理,以使具有最低经度值的站点在数组中排在第一位,并且最后一个值将具有其经度的最高值,同时保留其相应的名称(第1行),以及它的经度。

String[][] temp = new String[2][1];
    for (int a = 0; a < sNamesLongitude[0].length - 1; a++) {

        if ((Double.parseDouble(sNamesLongitude[1][a])) > (Double.parseDouble(sNamesLongitude[1][a + 1]))) {

            temp[0][0] = sNamesLongitude[0][a];
            temp[1][0] = sNamesLongitude[1][a];

            sNamesLongitude[0][a] = sNamesLongitude[0][a + 1];
            sNamesLongitude[1][a] = sNamesLongitude[1][a + 1];

            sNamesLongitude[0][a + 1] = temp[0][0];
            sNamesLongitude[1][a + 1] = temp[1][0];
            a=0;
        }

2 个答案:

答案 0 :(得分:4)

问题是temp只有两个元素temp[0][0]temp[1][0]

你的代码 -

sNamesLongitude[0][a + 1] = temp[0][a]; // Gets exception

a可能会达到大于1的值(根据您的问题为306),因此会发生异常。

答案 1 :(得分:1)

花了一整天后,答案是: a应该= -1,而if block的末尾不是0。

任何人都可以解释为什么,这是否与范围有关?