[英]Sorting a multidimensional array, lowest to highest, only the first element remains unsorted
我一直在处理这个问题,试图对这个多维数组进行排序,但是我一直得到错误的输出。 数组已排序,除了第一个元素。 除了数组中的第一个元素之外,其他所有东西都是有序的。 排序数组中的第一个元素,也是排序之前数组中的第一个元素,即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;
}
问题是temp
只有两个元素temp[0][0]
和temp[1][0]
您的代码-
sNamesLongitude[0][a + 1] = temp[0][a]; // Gets exception
a
可能会上升到大于1
值(根据您的问题达到306),因此发生异常。
经过一整天后,答案是: a
应该= -1,而if block
的末尾不是0。
任何人都可以解释为什么这与范围有关吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.