Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对多维数组进行排序(从低到高),只有第一个元素保持未排序状态_Java_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

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

Java 对多维数组进行排序(从低到高),只有第一个元素保持未排序状态,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我一直在处理这个问题,试图整理这个多维数组,但我总是得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素之外,一切都井然有序。排序数组中的第一个元素也是排序前数组中的第一个元素,即sNamesLongitude[0][0] 字符串sNamesLongitude[2][306]数组有两行。第一行是伦敦地铁站的名称,第二行是相应的经度。我试图对数组进行排序,这样经度值最低的站点在数组中排在第一位,最后一个值的经度值最高,同时保留其相应的名称(第1行)及其经度 String[][] te

我一直在处理这个问题,试图整理这个多维数组,但我总是得到错误的输出。除第一个元素外,数组已排序。除了数组中的第一个元素之外,一切都井然有序。排序数组中的第一个元素也是排序前数组中的第一个元素,即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;
        }
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