Запутался в том, как работать как с индексами, так и со значениями в массиве в Java

#java #arrays

#java #массивы

Вопрос:

 public static double getDistance(int position) {
    
    double distance[] = {64, 63.3, 109, 87.9, 81.2, 73.9, 70.5, 107};
    double distanceInKM = 0;
    int index = 0;
    
    for(int i = 0; i < distance.length; i  ) {
        
        if(position == distance[i]) {
            
            distanceInKM = distance[i] * 1.60934;
        }
    }
    return distanceInKM;
}
  

Предполагается, что приведенный выше код принимает позицию int, сравнивает ее со значениями в массиве и, основываясь на позиции, преобразует значение в заданной позиции в километры, используя приведенное выше преобразование. Я запутался в том, как заставить позицию работать с индексом массива, а не только со значениями напрямую.

Я изучил использование indexOf , но это совсем не помогает (я пробовал делать Arrays.asList(distance).indexOf(distance[i]) вместо просто distance[i], это не сработало).

Я запутался в том, как сначала сравнить позицию с индексами массива, а затем получить значение по этому индексу и выполнить вычисления по нему. Любая помощь приветствуется.

Правильный пример запуска будет:

getDistance(2) -> 109 * 1.60934 = 175.42…

Комментарии:

1. Вы имеете в виду, что хотите просто изменить distance[position] ? для этого вам не нужен цикл.

Ответ №1:

Думаю, вы напрямую вызываете индекс, а не сравниваете его. Просто не забудьте проверить длину. Как показано ниже :

 public static double getDistance(int position) {
    
    double distance[] = {64, 63.3, 109, 87.9, 81.2, 73.9, 70.5, 107};
    double distanceInKM = 0;
    
    if(position < distance.length) {
        distanceInKM = distance[position] * 1.60934;
    }

    return distanceInKM;
}
  

Комментарии:

1. Большое вам спасибо, я не знаю, почему я так сильно боролся с этим…