打印索引和数组元素

时间:2013-11-26 16:48:55

标签: java arrays

嘿伙计们我真的在努力尝试打印我的数组索引和元素值,我几天前发布了一个问题,并得到了非常有用的建议,但似乎无法正确使用此部分,我能够打印数组的第一个索引(距离)但不能打印整个事物而不会丢失原始索引值:

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);

真的很遗憾继续提起这件事但是真的已经尝试过,无法让它为我的生活工作任何帮助或建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

首先,你排序

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)和一个值(这是你的双重)的类,并对Distance类型的数组进行排序。

 Class Distance
 {
      public int ID;
      public double value;
 }

答案 1 :(得分:-1)

尝试将for循环更改为for(int i=0; max = distances.length && i < max; i++){...}