嗨,我试图显示数组的索引而不是元素,到目前为止,这是我的代码的一部分:
int randomInt2 = randomGenerator.nextInt(15)+1;
double [] distances = new double [randomInt2];
Arrays.sort(distances);// sorts array from highest to lowest
for (double val : distances) {
System.out.println("["+val+"],");
}
System.out.println("The Nearest to point 1 is point: ");
每个索引的值都在1-1000之间,但我不想显示该值,所以我想显示该索引,这样我就可以显示哪些索引最接近点1(即0)。需要我解释更多,然后我很高兴
感谢dasblinkenlight的评论,我终于了解了您的需求。
做您需要做的最简单的方法是创建一个像
class Value implements Comparable<Value> {
int index;
dobule value;
public int compareTo(Value val) {
return Double.compare(this.value, val.value);
}
}
并使用它来存储值。注意Comparable
实现-允许您使用Collections.sort()
和Arrays.sort()
。
您也不能使用sorting。对数组进行排序比查找最小值要复杂得多。只需迭代一次数组,然后找到最小值并返回其索引。
double minVal = Double.MAX_VALUE;
int minIndex = -1;
for (int i=0, max=distances.length; i<max;i++) {
if (values[i] < minVal) {
minVal = values[i];
minIndex = i;
}
}
System.out.println("The Nearest to point 1 is point: "+minIndex+" with value "+minVal);
至于索引:foreach
如果要访问给定元素的索引,则不能使用标准循环。原因之一是您可能要迭代的某些集合不支持元素排序(例如Set
)。
您必须使用标准for
循环或自己跟踪索引。
for (int i=0, max=distances.length; i<max;i++) {
System.out.println("["+i+"] "+distances[i]);
}
或者
int i = 0;
for (double val : distances) {
System.out.println("["+i+"] "+val);
i++;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句