Несколько условий за один раз tryParse

Я хочу, чтобы люди не могли вводить что-либо, кроме значения int от 0 до 19.

Используя tryParse, я могу гарантировать, что можно вводить только целочисленные значения. Используя стандартный цикл while, я могу гарантировать, что можно вводить только целые числа от 0 до 19, но я изо всех сил пытаюсь объединить два значения.

До сих пор единственный способ, которым я заставил это работать, состоит в том, чтобы отделить две петли, и это выглядит грязным. Вот так:

        while (!(int.TryParse(Console.ReadLine(), out quant)))
        {

           Console.Clear();
           Console.WriteLine("Current total: £" + total.ToString("0.00\n"));
           Console.WriteLine("That is an invalid quantity. Please enter the quantity again");

        }

        while ((quant >= 20 || quant < 0))
        {
            Console.Clear();
            Console.WriteLine("Current total: £" + total.ToString("0.00\n"));
            Console.WriteLine("That is an invalid quantity. Please enter the quantity again");


            while (!(int.TryParse(Console.ReadLine(), out quant)))               {


                Console.Clear();
                Console.WriteLine("Current total: £" + total.ToString("0.00\n"));
                Console.WriteLine("That is an invalid quantity. Please enter the quantity again");

            }
        } 

Это единственный способ заставить два значения зацикливаться, если неоднократно вводится неправильное значение.

Как я могу использовать несколько значений, чтобы использовать один цикл?

1 ответ

Решение

Вы можете объединить условия в один цикл:

// we want: Console.ReadLine() being an integer value (quant) and
//          quant >= 0 and
//          quant <= 19
while (!(int.TryParse(Console.ReadLine(), out quant) && 
         quant >= 0 && 
         quant <= 19)) {
  Console.Clear();

  Console.WriteLine("Current total: £" + total.ToString("0.00\n"));
  Console.WriteLine("That is an invalid quantity. Please enter the quantity again");
}

// quant is integer and within [0..19] range
Другие вопросы по тегам