Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 - Fatal编程技术网

Java 程序正在返回已排序的索引,但数组从未排序

Java 程序正在返回已排序的索引,但数组从未排序,java,Java,我的程序有一个方法,允许用户搜索数组中的元素并返回其索引。出于某种原因,它返回的索引与数组排序时的索引相同,而数组从未排序过 方法如下: public static ArrayList elementIndex(int search) { ArrayList<Integer> index = new ArrayList<Integer>(); for (int i = 0; i<array.length; i++)

我的程序有一个方法,允许用户搜索数组中的元素并返回其索引。出于某种原因,它返回的索引与数组排序时的索引相同,而数组从未排序过

方法如下:

public static ArrayList elementIndex(int search) {

        ArrayList<Integer> index = new ArrayList<Integer>();

        for (int i = 0; i<array.length; i++) 
            if (search == array[i]) {

            index.add(i + 1); 

        }
        return index;

    } 
publicstaticarraylistelementindex(int-search){
ArrayList索引=新的ArrayList();
对于(int i=0;i最常见计数){
mostCommonCount=currentCount;
MOST公共=阵列排序[i];
}
}
其他的
currentCount=0;
}
返回最常见的;
}

arraySorted
在代码中(
mostCommon
方法)是对(全局)变量
array
的引用-两者都指向同一对象。因此,发生在一个数组上的情况也会发生在另一个数组上。也就是说,当你对一个数组进行排序时,另一个(相同的数组)也会被排序。

Arrays.sort()
是一种变异方法——它(永久地)修改应用它的数组。如果您以前对数组进行了排序,它将在程序中保持排序状态。请使用
int[]arraySorted=Arrays.copyOf(array,array.length)制作一个副本i+1
中使用+1?我认为它应该是
index.add(I)
,这样它看起来更漂亮,第一个元素将返回1,而不是0@SamuelToh@EthanO可以只要你知道你在做什么就好了。因为我认为您可能忽略了以下事实:数组的第一个索引以0而不是1开始。
public static int mostCommon(int size) {

        int[] arraySorted = array;      
        int mostCommon = 0, mostCommonCount = 0, currentCount = 0;

        Arrays.sort(arraySorted);

        for (int i = 1; i < size; i++) {

            if (arraySorted[i - 1] == arraySorted[i]) {
                currentCount++;

                if (currentCount > mostCommonCount) {
                    mostCommonCount = currentCount;
                    mostCommon = arraySorted[i];
                }
            }
            else 
                currentCount = 0;

        }

        return mostCommon;
    }