Member 12984155 Ответов: 1

Создание массива с вводом данных пользователя


Я хочу создать цикл, который будет длиться только до тех пор, пока пользователь не даст правильный ввод.
Требования таковы:
Число должно быть между 1 t0 100, и введенное число не должно совпадать с предыдущим.

Что я уже пробовал:

for (int i = 0; i < Number.Length; i++)
{
Console.WriteLine("Enter number 1. The number must be between 1-100");
Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
    }

    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 1. The number must be between 1-100");
    }
    else
    {
       //store the value in the array
        Number[i] = Number[i];
    }


}

for (int i = 0; i < Number.Length; i++)
{

    Console.WriteLine("Enter number 2. The number must be between 1-100");
    Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Number less than 1. Please reenter number 2.
The number must be between 100");
    }
    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 2. The number must be between 1-100");
    }
    else if (Number[i] == Number[i])
    {
        Console.WriteLine("Numbers must be unique. It cannot match any of the pervisouly entered numbers");
    }
    else
    {
        Number[i] = Number[i];
    }
}

for (int i = 0; i < Number.Length; i++)
{
    Console.WriteLine("Enter number 3. The number must be between 1-100");
    Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Please reenter number 3. The number must be between 1-100");
    }
    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 3. The number must be between 1-100");
    }
    else if (Number[i] == Number[i])
    {
        Console.WriteLine("Numbers must be unique. It cannot match any of the pervisouly entered numbers");
    }
    else
    {
        Number[i] = Number[i];
    }

Bhola Ram Sahu

||иначе если (число, [Я] == число[я])|/ Это условие всегда будет истинным. Вот почему вы не получаете правильного результата.

Используйте внутренний цикл или функцию для проверки повторяющегося значения.

[no name]

А ваш вопрос-что?
Что происходит, когда пользователь вводит "а"?

1 Ответов

Рейтинг:
7

Tomas Takac

Ваша логика слишком сложна. Вы можете сделать все в одном цикле. Кроме того, вам нужно научиться инкапсулировать логику в методы/функции/классы, чтобы повторно использовать код и сделать его более читаемым.

for (int i = 0; i < Number.Length; i++)
{
    while (true) // loop until you have correct number
    {
        var number = ReadNumber();
        if (IsValid(number))
        {
            Number[i] = number; // store if it's correct
            break; // exit the inner while-loop as we have correct number
        }
    }
}

int ReadNumber()
{
    Console.WriteLine("Enter number 1. The number must be between 1-100");
    return Int32.Parse(Console.ReadLine());
}

bool IsValid(int number)
{
    if (number < 1)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
        return false;
    }
    if (number > 100)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
        return false;
    }
    return true;
}

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