none
Оператор if RRS feed

  • Вопрос

  • Есть часть кода:
     static void Main(string[] args)
            {
                ConsoleKeyInfo key;
                string depo = null;
                bool a = false, b= false;
                Regex depo1 = new Regex(@"/d+[,]?/d*");
                do
                {
                    key = Console.ReadKey(true);
                    if ((key.KeyChar >= '0' && key.KeyChar <= '9') || (key.KeyChar == ','))
    
                    {   if (b == true) depo = null; 
                        Console.Write(key.KeyChar);
                        depo = depo + key.KeyChar.ToString();
                        if ((key.Key==ConsoleKey.Enter)&(!depo1.IsMatch(depo)))
                        {
                            Console.WriteLine("Неверный формат!");
                            Console.WriteLine();
                            b = true;
                        }
                        }
    Почему при наборе на клавиатуре ',,,,,'(количество запятых не важно. Смысл-чтоб с условием регулярного выражения не совпало) и последующего нажатия клавиши Enter код не заходит в тело третьего по счету оператора if? В регулярном выражении описано "либо целое число, либо дробное".
    28 сентября 2015 г. 8:12

Ответы

  • Добрый день.

    При нажатии Enter, уже вот это выражение - ложь:

    if ((key.KeyChar >= '0' && key.KeyChar <= '9') || (key.KeyChar == ','))

    А раз вы не зашли во внешний if, то во внутренний и подавно.

    • Предложено в качестве ответа YatajgaEditor 28 сентября 2015 г. 10:58
    • Помечено в качестве ответа Ermak1 28 сентября 2015 г. 12:16
    28 сентября 2015 г. 10:33
    Отвечающий

Все ответы

  • Добрый день,

    для этого и нужен Debug - Ставьте точки останова и трассируйте.

    28 сентября 2015 г. 8:53
  • Добрый день.

    При нажатии Enter, уже вот это выражение - ложь:

    if ((key.KeyChar >= '0' && key.KeyChar <= '9') || (key.KeyChar == ','))

    А раз вы не зашли во внешний if, то во внутренний и подавно.

    • Предложено в качестве ответа YatajgaEditor 28 сентября 2015 г. 10:58
    • Помечено в качестве ответа Ermak1 28 сентября 2015 г. 12:16
    28 сентября 2015 г. 10:33
    Отвечающий
  • Добрый день.

    При нажатии Enter, уже вот это выражение - ложь:

    if ((key.KeyChar >= '0' && key.KeyChar <= '9') || (key.KeyChar == ','))

    А раз вы не зашли во внешний if, то во внутренний и подавно.

    Да, вы правы. Спасибо.
    28 сентября 2015 г. 12:16