Не получается сделать проверку в цикле while

Нужно чтобы вводились только цифры(с этим проблем нет) и плюс проверка на то, чтобы цифра не превышала значение 4.Но почему то проверка на значение больше 4 игнорируется.

static int Set_Select()
    {
        Console.WriteLine("Выберите нужное действие: ");
        Console.WriteLine("1.Сложение\n2.Вычитание\n3.Умножение\n4.Деление");
        
        int select;
        string input = Console.ReadLine();
        bool one_input = int.TryParse(input,out select);
        
    while(!one_input && select > 4)
    {       
        Console.WriteLine("Ошибка,попробуйте ещë раз");
        input = Console.ReadLine();
        one_input = int.TryParse(input,out select);
        
         
    }
    return select;
    
    
    
    }

Ответы (1 шт):

Автор решения: aepot

Парсинг числа проходит успешно, !one_input возващает false. Поэтому следующая проверка не производится.

Чтобы заработало, поменяйте немного условие !one_input || select > 4. Кстати, его можно улучшить !one_input || select > 4 || select < 1.

А чтобы не дублировать код, я бы написал так:

static int Menu()
{
    while (true)
    {
        Console.WriteLine("Выберите нужное действие:");
        Console.WriteLine("1.Сложение\n2.Вычитание\n3.Умножение\n4.Деление");
        
        string input = Console.ReadLine();
        if (int.TryParse(input, out int select) && select > 0 && select < 5)
        {
            return select;
        }
    }
}
→ Ссылка