Java 对多维数组进行排序(从低到高),只有第一个元素保持未排序状态
我一直在处理这个问题,试图整理这个多维数组,但我总是得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素之外,一切都井然有序。排序数组中的第一个元素也是排序前数组中的第一个元素,即sNamesLongitude[0][0] 字符串Java 对多维数组进行排序(从低到高),只有第一个元素保持未排序状态,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我一直在处理这个问题,试图整理这个多维数组,但我总是得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素之外,一切都井然有序。排序数组中的第一个元素也是排序前数组中的第一个元素,即sNamesLongitude[0][0] 字符串sNamesLongitude[2][306]数组有两行。第一行是伦敦地铁站的名称,第二行是相应的经度。我试图对数组进行排序,这样经度值最低的站点在数组中排在第一位,最后一个值的经度值最高,同时保留其相应的名称(第1行)及其经度 String[][] te
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;
}
String[][]temp=新字符串[2][1];
对于(int a=0;a(Double.parseDouble(sNamesLongitude[1][a+1])){
温度[0][0]=经度[0][a];
温度[1][0]=经度[1][a];
sNamesLongitude[0][a]=sNamesLongitude[0][a+1];
sNamesLongitude[1][a]=sNamesLongitude[1][a+1];
经度[0][a+1]=温度[0][0];
SNAMES经度[1][a+1]=温度[1][0];
a=0;
}
问题是temp
只有两个元素temp[0][0]
和temp[1][0]
你的密码-
sNamesLongitude[0][a + 1] = temp[0][a]; // Gets exception
a
可能上升到大于1
(根据您的问题,上升到306),因此出现异常。问题是temp
只有两个元素temp[0][0]
和temp[1][0]
你的密码-
sNamesLongitude[0][a + 1] = temp[0][a]; // Gets exception
a
可能上升到大于1
(根据您的问题,上升到306)的值,因此会出现异常情况。在花了一整天的时间之后,答案是:
a
应该=-1,而不是在if块的末尾0
有人能解释一下为什么,这与范围有关吗?在花了一整天的时间之后,答案是:
a
应该=-1,而不是在if块的末尾0
有人能解释一下为什么,这与作用域有关吗?在哪一行出现异常?我已经更新了代码,不再出现异常。数组现在已排序,但第一个元素的值高于以下一些值。该元素也是预排序数组中的第一个。在对于循环,我认为条件应该是(a