none
Как сделать, чтобы пользователь мог вводить только целые числа и знак минус! RRS feed

  • Вопрос

  • Добрый день!Я сделал небольшое задание в консольном приложении!Для полноценной работы мне нужно , чтобы пользователь мог ввести только челые числа и знак минус!С числами я разобрался, сделал это все небольшым куском кода

     while ((key1 = Console.ReadKey(true)).Key != ConsoleKey.Enter) // пока не нажали Enter
       {
        
        char c = key1.KeyChar; 
        if (Char.IsNumber(c)) //Только цыфры
        {
         Console.Write(c); 
         sb1.Append(c); 
        }
       }
    

     

    следовательно вопрос:Как  разрешить пользователю вводить знак минус  и клавишу Backspace?Может есть метод в структуре Char?

    Зарание благодарен!

     

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:14 MSDN Forums consolidation (От:Visual C#)
    19 сентября 2010 г. 8:23

Ответы

  • while ((key1 = Console.ReadKey(true)).Key != ConsoleKey.Enter) // пока не нажали Enter
          {
            //Console.WriteLine(key1.Key);
            char c = key1.KeyChar;
            if ((Char.IsNumber(key1.KeyChar)) || (key1.Key == ConsoleKey.OemMinus)) 
            {
              Console.Write(c);
              //sb1.Append(c);
            }
          }
    
    • Помечено в качестве ответа I.Vorontsov 21 сентября 2010 г. 5:50
    19 сентября 2010 г. 8:42
  • ConsoleKeyInfo key1;
    StringBuilder sb1 = new StringBuilder();
    while ((key1 = Console.ReadKey(true)).Key != ConsoleKey.Enter)
    {
    
     char c = key1.KeyChar;
     if (Char.IsNumber(c) || c == '-' || c == '\u0008')
     {
      Console.Write(c);
      if (c == '\u0008') sb1.Remove(sb1.Length - 1, 1);
      else sb1.Append(c);
     }
    }
    

     

    Но лучше бы не проверять каждый символ, а целиком введенную строку

    int number;
    Console.WriteLine("Введите целое число");
    while (!int.TryParse(Console.ReadLine(), out number))
    {
     Console.WriteLine("Можно вводить только целые числа");
    }
    

     

    • Помечено в качестве ответа I.Vorontsov 21 сентября 2010 г. 5:50
    19 сентября 2010 г. 8:47

Все ответы