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

Java 如何删除数组中的最小值?

Java 如何删除数组中的最小值?,java,arrays,Java,Arrays,我试图删除数组中的最小值。我已遍历数组以找到最小值,但当我尝试删除它时,我得到以下结果: SportStacker.java:111: error: cannot find symbol times.remove(slowestTime); ^ symbol: method remove(double) location: variable times of type double[] 1 error

我试图删除数组中的最小值。我已遍历数组以找到最小值,但当我尝试删除它时,我得到以下结果:

    SportStacker.java:111: error: cannot find symbol
            times.remove(slowestTime);
                 ^
    symbol:   method remove(double)
    location: variable times of type double[]
    1 error
我知道我告诉它删除一个double[],而我只想删除给定索引中的一个double。我怎么说我想删除索引中包含最小值的double?这是我的方法代码

     public double removeSlowestTime() {

     double slowestTime;

     for (int i = 0; i < times.length; i++) {
        if (times[i] == 0) {
           continue;
        }
        else {
           if (slowestTime < times[i]) {
              slowestTime = times[i];
            times.remove(slowestTime);
           }
        }
     }
     return slowestTime;
数组没有remove方法,您可以使用ArrayList或将该值设置为某个默认值,如

times[someIndex] = null; // put any valid default value based on your array
数组没有remove方法,您可以使用ArrayList或将该值设置为某个默认值,如

times[someIndex] = null; // put any valid default value based on your array

您试图删除元素的方式似乎不正确。 试一试


如果您想执行许多类似的操作,则集合或ArrayList可能是更好的方法。

您尝试删除元素的方式似乎不正确。 试一试


如果要执行许多类似的操作,则集合或ArrayList可能是更好的方法。

不能使用以下方法从双数组中删除元素:

times.remove(slowestTime);
数组的大小是固定的,创建后不能更改元素的数量

您可以构建一个新的双数组。您可以保存阵列中最慢时间的位置:

slowestIndex = i;
...
并在循环完成后创建新阵列:

   double[] newTimes = new double[times.length - 1];
    for (int i=0, j=0; i < times.length - 1; i++) {
       if (i != slowestIndex) {
          newTimes[j++] = newTimes[i];
       }
    }

不能使用以下方法从双数组中删除元素:

times.remove(slowestTime);
数组的大小是固定的,创建后不能更改元素的数量

您可以构建一个新的双数组。您可以保存阵列中最慢时间的位置:

slowestIndex = i;
...
并在循环完成后创建新阵列:

   double[] newTimes = new double[times.length - 1];
    for (int i=0, j=0; i < times.length - 1; i++) {
       if (i != slowestIndex) {
          newTimes[j++] = newTimes[i];
       }
    }

无法对数组调用remove,因为它不作为方法存在。没有简单的方法可以从数组中删除元素;我建议改用java.util.List的实现,它提供了诸如remove之类的功能。

您不能在数组上调用remove,因为它不作为方法存在。没有简单的方法可以从数组中删除元素;我建议改为使用java.util.List的实现,它提供了诸如remove之类的功能。

正如本答案中其他地方提到的,与JavaScript和Python等语言不同,java中的数组在定义数组时定义了固定数量的元素

int[] foo = new int[10]; // this array object will always have 10 elements
foo[0] = 42;
foo = new int[20];       // now foo refers to a different array
                         // object with 20 elements
return foo[0];           // so this will return the default int value, 0, not 42
如果要查找与数组类似类型的对象,请使用ArrayList:

ArrayList<Integer> foo = new ArrayList<Integer>(); // this has zero elements
foo.add(42);                                      // now it has one
foo.add(8675309);                                 // now it has two
foo.remove(0);                                    // now you've removed the first
return foo.get(0);       // returns 8675309, because everything shifted over by one

正如本答案中其他地方提到的,与JavaScript和Python等语言不同,Java中的数组在定义数组时定义了固定数量的元素

int[] foo = new int[10]; // this array object will always have 10 elements
foo[0] = 42;
foo = new int[20];       // now foo refers to a different array
                         // object with 20 elements
return foo[0];           // so this will return the default int value, 0, not 42
如果要查找与数组类似类型的对象,请使用ArrayList:

ArrayList<Integer> foo = new ArrayList<Integer>(); // this has zero elements
foo.add(42);                                      // now it has one
foo.add(8675309);                                 // now it has two
foo.remove(0);                                    // now you've removed the first
return foo.get(0);       // returns 8675309, because everything shifted over by one
j++不应该在newTimes[j++]赋值中不在循环中吗?j++不应该在newTimes[j++]赋值中不在循环中吗?