Поиск значений в массивах

У меня есть массив на С#, который генерирует случайный массив длины 5. Я уже объявил этот способ

int[] array = new int[5]

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

У меня есть этот код, что-то вроде этого, он дает мне некоторые значения, которые мне не нужны. Как я могу реализовать такое, чтобы оно удовлетворяло моему условию? Заранее спасибо.

    private void btnSearch_Click(object sender, EventArgs e)
    {
        //use InputBox dialog to input a value.
        //Search for the value in the array.
        //If found, display "Found!", otherwise
        //display "Not found!" when there is no match.

        for (int i = 0; i < array.Length; i++)
        {
            InputBox inputDlg = new InputBox("Search for array value " + (i + 1));
            if (inputDlg.ShowDialog() == DialogResult.OK)
            {
                if (array[i] == Array.IndexOf(array, 5))
                {
                    array[i] = Convert.ToInt32(inputDlg.Input);
                }
                tbxOutput.AppendText("Value found: " + array[i] + Environment.NewLine);
            }

            else
            {
                tbxOutput.AppendText("Value not found" + Environment.NewLine);
            }
        }

Convert.ToInt32(inputDlg.Input) возвращает вам значение, которое вам нужно искать в массиве?

Bentaye 06.03.2019 15:55

Да, он возвращает значения массива, но я ничего не вводил во входные данные, просто полностью нажал «ОК»... приведенное выше утверждение работает.

Ralph 06.03.2019 16:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
50
1

Ответы 1

Если я правильно понимаю, у вас есть 1 массив с 5 значениями, и вы хотите проверить, содержит ли он заданное значение. Это правильно? Если да, вам нужно пройтись по массиву и отметить логическое значение true, если вы его найдете:

private void btnSearch_Click(object sender, EventArgs e) {

    // loop until you call break
    while(true) {

        // ask for a value
        InputBox inputDlg = new InputBox("Search for array value " + (i + 1));

        try {
            int value = Convert.ToInt32(inputDlg.Input);

            // Check if value is in the array and display the appropriate message
            if (isInArray(array, value)) {
                tbxOutput.AppendText("Value found: " + value + Environment.NewLine);
                // break to exit from the while loop
                break;
            } else {
                tbxOutput.AppendText("Value not found" + Environment.NewLine);
            } 

        } catch (OverflowException) {
            tbxOutput.AppendText("OverflowException parsing input to int" + Environment.NewLine);
        } catch (FormatException) {
            tbxOutput.AppendText("FormatException parsing input to int" + Environment.NewLine);
        }   

    }
}

Метод isInArray:

// this method returns true if the given value is in the array
private static boolean isInArray(int[] array, int valueToFind) {
    boolean found = false;
    int currentValue;
    for (int i = 0; i < array.Length; i++) {
        currentValue = array[i];
        if (currentValue == valueToFind) {
            found = true;
            break;
        }
    }
    return found;
}

да. Но перед этим открывается диалоговое окно с просьбой ввести число. Если все в порядке, он будет отображаться как найденный, в противном случае продолжайте цикл, пока не будет найден правильный номер. Я использую приложения Windows Forms вместо консоли Windows. (inputDlg.ShowDialog() == DialogResult.OK)

Ralph 06.03.2019 16:02

@Ralph Я отредактировал свой ответ, включив в него цикл и диалоговые окна.

Bentaye 06.03.2019 16:09

В for есть петля isInArray. Для другого цикла вы не можете использовать цикл for, если только вы не хотите иметь ограниченное количество попыток. while — единственный способ продолжать спрашивать, пока не будет введено правильное значение.

Bentaye 06.03.2019 16:15

@Ralph Я отредактировал свой ответ, теперь у вас есть точная строка в методе isInArray

Bentaye 06.03.2019 16:24

@ Ральф, на каком языке ты говоришь? это Java или C# или что-то еще?

Bentaye 06.03.2019 16:26

С#. Спасибо, теперь это имеет больше смысла, но эта строка, похоже, дает исключение, следует ли добавить обработчик исключений? значение int = Convert.ToInt32 (inputDlg.Input);

Ralph 06.03.2019 16:29

@Ralph Я добавил попытку/поймать, вероятно, это сработает. Пожалуйста, проголосуйте и примите мой ответ, если он вам помог.

Bentaye 06.03.2019 20:29

Другие вопросы по теме