программа выводит ответ на каждый символ в массиве, просто нужно, чтобы он выводился, если значение найдено или нет, один раз

#java #arrays

#java #массивы

Вопрос:

 import java.util.Scanner;

public class Array1{

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int[] values = {1, 2, 3, 4, 5};

        System.out.println("Please enter an integer:");

        int userInput = input.nextInt();

        for (int i = 0; i < values.length; i  ) {
            if (values[i] == userInput) {

                System.out.println("value found!");
            } else {
                System.out.println("value not found!");
            }
        }
    }
}
  

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

 value not found!
value not found!
value found!
value not found!
value not found!
  

Ответ №1:

Самым простым решением, которое я могу придумать, было бы использовать флаг.

 boolean found = false;
for (int i = 0; i < values.length; i  ) {
    if(values[i] == userInput) {
        found = true;
        break;    // can end the loop since value was found
    }
}

if(found) {
    System.out.println("value found!");
} else {
    System.out.println("value not found!");
}
  

Ответ №2:

Причина, по которой вы видите это, заключается в том, что вы выводите результат if инструкции на каждой итерации цикла.

Вместо этого, что вы хотели бы сделать, это установить boolean значение перед циклом и установить его равным true , если значение найдено.

Затем, после завершения цикла, вы можете проверить, было ли boolean когда-либо установлено значение true :

 public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    int[] values = {1, 2, 3, 4, 5};

    System.out.println("Please enter an integer:");

    int userInput = input.nextInt();

    boolean valueFound = false;
    for (int i = 0; i < values.length; i  ) {
        if (values[i] == userInput) valueFound = true;
    }

    if (valueFound) {
        System.out.println("Value Found!");
    } else {
        System.out.println("Value NOT Found!");
    }
}
  

Результат:

 Please enter an integer:
3
Value Found!