2013-11-26 2 views
0

Эй, ребята, я действительно пытаюсь напечатать свой индекс массива и значение элемента, я опубликовал вопрос несколько дней назад и получил действительно полезный совет, но, похоже, , я могу напечатать 1-й индекс массива (расстояние), но не в состоянии напечатать всю вещь без потери первоначального значения индекса:Индекс печати и элемент массива

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

действительно жаль, чтобы в результате чего этот вопрос вверх, но на самом деле пытался и не может заставить его работать для жизни меня, любая помощь или совет будут оценены.

+4

Я не понимаю проблемы. Вы выглядите так, как будто он должен работать –

+0

Что это значит: «но не удалось распечатать всю вещь без потери исходного значения индекса:» – LivingThing

+0

Код в порядке – Federico

ответ

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

Если вы хотите сохранить исходные показатели, вы тоже можете это сделать.

  • самый очевидный способ будет иметь второй массив paralell, и вид, что наряду с исходного массива

пример:

if (distances[i] < minVal) 
{ 
    double temp = distances[j]; 
    int tempindex = indices[j]; 
    ... 
  • лучше всего было бы создайте класс с индексом (или более соответствующим образом названным, идентификатор) и значением (которое является вашим двойным) и отсортируйте массив типа «Расстояние».

.

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

Просто положить 'print' заявление внутри блока' if' будет выполнять эту работу, не так ли? – Smit

+0

@ Считайте, что вам еще нужно отсортировать массив, но да, если вы поместите выражение 'print' внутри внешнего цикла сортировки, чем да, это сработало бы –

+0

Если вы посмотрите на последний комментарий от OP, из этого я вывел это и для этого он не нуждается в сортировке., – Smit

-1

Попробуйте изменить цикл для for(int i=0; max = distances.length && i < max; i++){...}

+0

'max' - это не что иное, как' array length'. Изменяя это условие, не делайте различий, и 'length массива' никогда не меняется. – Smit

Смежные вопросы