嘿伙计们,我真的很努力尝试打印我的数组索引和元素值,几天前我发布了一个问题并得到了非常有用的建议,但似乎根本无法正确处理这部分,我可以打印数组的第一个索引(距离),但无法在不丢失原始索引值的情况下打印整个内容:
double minVal = Double.MAX_VALUE;
int minIndex = -1;
for (int i=0, max=distances.length; i<max;i++) {
if (distances[i] < minVal) {
minVal = distances[i];
minIndex = i;
//Gets the minimum point and minimum distance
}
}
System.out.println("The Nearest to point K is point: "+minIndex+" with distance "+minVal);
真的很抱歉继续提出这个问题,但我确实已经尝试过,但无法让它在我的生活中发挥作用,任何帮助或建议将不胜感激。
最佳答案
首先,你排序
for (int i=0; i<distances.length; i++) {
for(int j = i+1; j<distances.length; j++)
{
if (distances[i] > distances[j])
{
double temp = distances[j];
distances[j] = distances[i];
distances[i] = temp;
}
}
}
然后,您只需打印
for (int i=0; i<distances.length; i++) {
System.out.println(i + " -> " + distances[i]);
}
<小时/>
如果你想保留原来的索引,你也可以这样做。
- 最明显的方法是拥有第二个并行数组,并将其与原始数组一起排序
示例:
if (distances[i] < minVal)
{
double temp = distances[j];
int tempindex = indices[j];
...
- 更好的方法是创建一个带有索引(或更恰本地命名为 ID)和值(这是您的 double 值)的类,并对 Distance 类型的数组进行排序。
.
Class Distance
{
public int ID;
public double value;
}
关于java - 打印数组的索引和元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20223065/