Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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_Eclipse_Loops_For Loop - Fatal编程技术网

Java 从数组中删除元素(特定于代码)

Java 从数组中删除元素(特定于代码),java,arrays,eclipse,loops,for-loop,Java,Arrays,Eclipse,Loops,For Loop,用户输入x数量的整数,这些整数存储在一个数组(“dataA”)中。计算数据的平均值,并应删除最远的元素(“异常值”)。我不知道如何删除元素,需要知道 此外,程序删除一个异常值,计算新的平均值并删除下一个异常值,直到剩下一个元素 public static Scanner sc1 = new Scanner(System.in); public static int dataN = sc1.nextInt();//number of data elements public static doub

用户输入x数量的整数,这些整数存储在一个数组(“dataA”)中。计算数据的平均值,并应删除最远的元素(“异常值”)。我不知道如何删除元素,需要知道

此外,程序删除一个异常值,计算新的平均值并删除下一个异常值,直到剩下一个元素

public static Scanner sc1 = new Scanner(System.in);
public static int dataN = sc1.nextInt();//number of data elements
public static double[] dataA = new double[dataN];//array storing elements

for(int index = 0; index<dataA.length; index++)//increments index
    {
        double lengthA = dataA.length;//length of array
        double avg = sum/lengthA;//avg of elements

        double outlier = dataA[0];//outlier
        double index_outlier = 0;//index of outlier

        double dif_in = Math.abs(avg - dataA[index]);//difference of avg & element
        double dif_out = Math.abs(avg - outlier);//difference of avg & outlier

        if(dif_in > dif_out)
        {
            outlier = dataA[index];
            index_outlier = index;      
        }
公共静态扫描仪sc1=新扫描仪(System.in);
public static int dataN=sc1.nextInt()//数据元素的数量
public static double[]dataA=新的double[dataN]//存储元素的数组
for(int index=0;index dif_out)
{
离群值=数据A[索引];
指数\离群值=指数;
}

最好的解决方案是创建一个新数组,该数组复制上一个数组中的元素,但要删除的元素除外(使用for循环和比您少1个空间的数组)然后将原始数组设置为新数组。

最好的解决方案是创建一个新数组,该数组复制上一个数组中的元素,但要删除的元素除外(使用for循环和比您少1个空间的数组)然后将原始数组设置为新数组。

最好的解决方案是创建一个新数组,该数组复制上一个数组中的元素,但要删除的元素除外(使用for循环和比您少1个空间的数组)然后将原始数组设置为新数组。

最好的解决方案是创建一个新数组,该数组复制上一个数组中的元素,但要删除的元素除外(使用for循环和比您少1个空间的数组)然后将原始数组设置为新数组。

由于需要可变大小的数据结构,请使用LinkedList而不是原始数组

此外,更好的解决方案如下: 1) 将所有值存储在LinkedList中。在使用插入排序将元素添加到列表时对其进行排序,或在使用Collections.Sort(列表)添加所有元素后对其进行排序。 2) 找出平均值。这可以在列表中添加元素时完成。无需再次迭代列表。 3) 因为所有的值都是按排序的,所以离群值将是LinkedList中的第一个或最后一个元素。首先比较diff_和最后比较diff_,然后删除较大的。 4) 重新计算平均值。为此,您可以使用一个非常简单的方程式: 新的平均值=((平均值*l)-异常值/(l-1); 其中l=计算平均值的数值数量。
5) 重复步骤3和4,直到LinkedList中只剩下1个元素。

因为您需要可变大小的数据结构,所以请使用LinkedList而不是基元数组

此外,更好的解决方案如下: 1) 将所有值存储在LinkedList中。在使用插入排序将元素添加到列表时对其进行排序,或在使用Collections.Sort(列表)添加所有元素后对其进行排序。 2) 找出平均值。这可以在列表中添加元素时完成。无需再次迭代列表。 3) 因为所有的值都是按排序的,所以离群值将是LinkedList中的第一个或最后一个元素。首先比较diff_和最后比较diff_,然后删除较大的。 4) 重新计算平均值。为此,您可以使用一个非常简单的方程式: 新的平均值=((平均值*l)-异常值/(l-1); 其中l=计算平均值的数值数量。
5) 重复步骤3和4,直到LinkedList中只剩下1个元素。

因为您需要可变大小的数据结构,所以请使用LinkedList而不是基元数组

此外,更好的解决方案如下: 1) 将所有值存储在LinkedList中。在使用插入排序将元素添加到列表时对其进行排序,或在使用Collections.Sort(列表)添加所有元素后对其进行排序。 2) 找出平均值。这可以在列表中添加元素时完成。无需再次迭代列表。 3) 因为所有的值都是按排序的,所以离群值将是LinkedList中的第一个或最后一个元素。首先比较diff_和最后比较diff_,然后删除较大的。 4) 重新计算平均值。为此,您可以使用一个非常简单的方程式: 新的平均值=((平均值*l)-异常值/(l-1); 其中l=计算平均值的数值数量。
5) 重复步骤3和4,直到LinkedList中只剩下1个元素。

因为您需要可变大小的数据结构,所以请使用LinkedList而不是基元数组

此外,更好的解决方案如下: 1) 将所有值存储在LinkedList中。在使用插入排序将元素添加到列表时对其进行排序,或在使用Collections.Sort(列表)添加所有元素后对其进行排序。 2) 找出平均值。这可以在列表中添加元素时完成。无需再次迭代列表。 3) 因为所有的值都是按排序的,所以离群值将是LinkedList中的第一个或最后一个元素。首先比较diff_和最后比较diff_,然后删除较大的。 4) 重新计算平均值。为此,您可以使用一个非常简单的方程式: 新的平均值=((平均值*l)-异常值/(l-1); 其中l=计算平均值的数值数量。
5)重复步骤3和4,直到在链接表中只剩下1个元素。

可以尝试将异常值与数组的最后一个元素交换并继续使用数组,但是考虑一个较少的元素。如果您对它没有意见,那么您可以使用
Array
如下:

public static void main(String[] args) throws FileNotFoundException {
        double[] dataArray = new double[] {1.5,2.5,3.5,4.5,7.5,8.5,2.5};
        int arraySizeToConsider = dataArray.length;
        double outlier;
        int index_outlier;
        double avg;
        double diffInOutlierAndAvg;

        while(arraySizeToConsider > 0) {
            outlier = dataArray[0];
            index_outlier = 0;
            avg = computeSum(dataArray,arraySizeToConsider) / (arraySizeToConsider);//avg of elements
            diffInOutlierAndAvg = Math.abs(avg - outlier);

            // find outlier
            for(int index = 0; index<arraySizeToConsider; index++)//increments index
            {
                if(Math.abs(avg - dataArray[index]) > diffInOutlierAndAvg) {
                    outlier = dataArray[index];
                    index_outlier = index;
                }
            }
            double temp = dataArray[arraySizeToConsider -1];
            dataArray[arraySizeToConsider -1] = outlier;
            dataArray[index_outlier] = temp;
            arraySizeToConsider = arraySizeToConsider -1;
            System.out.println("Average: " + avg + " Outlier: " + outlier + " index " + index_outlier + " array size to consider: " +arraySizeToConsider);
        }
    }
    private static double computeSum(double[] array, int arraySizeToConsider) {
        double sum = 0;
        for (int i = 0; i < arraySizeToConsider; i++) {
            sum = sum + array[i];
        }
        return sum;
    }
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
double[]数据数组=新的double[]{1.5,2.5,3.5,4.5,7.5,8.5,2.5};
int arraySizeToConsider=dataArray.length;
双离群值;
int指数_离群值;
双平均值;
双扩散器和VG;
而(arraySizeToConsider>0){
离群值=数据数组[0];
指数_异常值=0;
avg=computeSum(dataArray,arraySizeToConsider)/(arraySizeToConsider);//元素的平均值
diffinoutlier和avg=Math.abs(平均值-outi