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++]赋值中不在循环中吗?