Массивы и для цикла (JAVA) - PullRequest
       1

Массивы и для цикла (JAVA)

0 голосов
/ 27 апреля 2018

Вероятно, это простой вопрос, но как мне отобразить «не в массиве» 1 раз, если объявленное ранее значение отсутствует в массиве? Я получил его для отображения "в массиве" с помощью расширенного цикла for для цикла через массив. Я заметил, что если бы я добавил else после if, он отобразил бы «not in array» 4 раза.

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

public static void main(String[] args) {

    int[] test = {1, 2, 3, 4, 5};  // Creating an array
    int number = 5;                 // My test number

    // Enhanced for loop
    for (int val: test) {
        if (number == val) {
            System.out.println(number + " in array");
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

используйте флаги,

boolean found = false; 
for (int val: test) {
    if (number == val) {
        //System.out.println(number + " in array");
       //set the flag if found 
       found=true;
       //stop once you found what you looking for
       break;
    }
}
//check if the flag is set
if(!found)
    System.out.println(number + " is not in array")
0 голосов
/ 27 апреля 2018

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

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

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

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