我一直在玩这个问题,试图理清这个多维数组,但我继续得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素外,一切都井然有序。排序数组中的第一个元素也是数组中排序之前的第一个元素,即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;
}
答案 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。
任何人都可以解释为什么,这是否与范围有关?