Что на самом деле возвращает эта функция?

#java

#java

Вопрос:

Я новичок в Java. В этом коде я не могу понять, что на самом деле возвращает эта функция. Возвращает ли она максимальное значение j. Если она возвращает максимальное значение j, то что делает возвращаемый j; в цикле for и куда он возвращает значение j ?

 public static int nextIndex(int[] pages, int i) {
    int page = pages[i];

    for (int j = i 1; j < pages.length; j  ) {
        if (pages[j] == page) {
            return j;
        }
    }

    return Integer.MAX_VALUE;
}
  

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

1. Это поиск следующего вхождения элемента по индексу i в массиве и возврат MAX_VALUE , если следующего вхождения нет.

Ответ №1:

строка за строкой:

 int page = pages[i];
  

мы устанавливаем переменную int page равной странице с индексом, указанным в функции

 for (int j = i 1; j < pages.length; j  ) {
  

мы выполняем цикл, начиная с индекса массива после индекса i, указанного в параметре вызова функции

     if (pages[j] == page) {
        return j;
    }
  

Если мы находим значение int, равное тому, на которое мы устанавливаем нашу переменную страницы — мы возвращаем индекс (он же — место в массиве, где мы находим это значение)

 return Integer.MAX_VALUE;
  

По умолчанию — мы возвращаем целое число.MAX_VALUE, если мы не можем найти значение позже в массиве после индекса i, которое содержит то же значение, что и переменная page .

Ответ №2:

Подумайте об этом, используя аналогию. Допустим, целочисленный массив «страницы» — это массив, который содержит количество слов на страницах. Допустим, у нас есть 100 страниц, поэтому размер массива pages будет равен 100. Ваша функция принимает в качестве аргумента массив страниц и целое число, представляющее номер страницы.

nextIndex() эффективно пытается найти следующую страницу, количество слов на которой равно количеству слов на странице, представленной символом «i» (один из аргументов вашего метода).

Итак, если вы передали i как 20, вы пытаетесь найти следующую страницу после 20-й страницы, которая содержит то же количество слов, что и 20-я страница.

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

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

1. если мой массив pages содержит эти элементы, pages[]={2,3,2,1,5,2,4,5,3,2,5,2} если я сохраню i= 0, это означает, что значение равно 2, а затем он увидит, в какой момент оно снова имеет значение 2. Но здесь может произойти 2 раза, так что какой индекс из 2 будет возвращен, последний или первый индекс, где появляется 2?

2. Метод возвращает j, когда удовлетворяет pages[j] == страница, поэтому будет возвращено только первое вхождение 2, т.е. индекс -> 2. Вы должны попытаться отладить этот код и пошагово просмотреть каждую строку, что дало бы вам лучшее понимание этого.