Почему! Найдено вместо того, чтобы найти необходимое в условии while l oop этого линейного поиска в массиве? - PullRequest
0 голосов
/ 06 мая 2020

Я только начинаю с Java и задаю довольно глупый вопрос о линейном поиске в массиве. Почему необходимо указывать !found, а не только found в условии while l oop? Я немного запутался, потому что, по моему мнению, while l oop должен выполняться, когда мы не нашли цель, а индекс меньше длины массива, поэтому вместо этого он должен быть while((found)&&(index<myArray.length))?

public class LinearSearch {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int target = 2;
        boolean found = false;
        int index = 0;
        int indexOfTarget = -1;
        int [] myArray = {18,38,2,20,24,14,5};
        while ((!found)&&(index<myArray.length)) {
            if (myArray[index]==target) {
                indexOfTarget=index;
                found = true;
            }
            index++;
        }
        if(found) System.out.println("Found element at position "+indexOfTarget);
        else System.out.println("Target not found");
    }

}

1 Ответ

0 голосов
/ 06 мая 2020

Ваш код также работает, если вы убедитесь, что вы выходите из l oop, когда индекс достигает предела массива. Есть много способов понять это.

//using !found, you need to break 
while (!found) {
   if (myArray[index]==target) {
       indexOfTarget=index;
       found = true;
       break;//also break when you find a match
   }
   index++;
   if (index == myArray.length) break;
}
``

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