2015-09-26 3 views
-1

Это очень простой скрипт, который я пытаюсь выяснить, и я искал простой ответ и не могу найти его на форумах или в моей книге C#.Если пользовательский ввод не является номером

Console.Write("Enter a Number\n"); 
int input = Convert.ToInt32(Console.ReadLine()); //convert code to an integer 

if (!Int32.IsNumber(input)) //if not a whole number input give an error 
{ 
    Console.WriteLine("Not an integer"); 
} 

Просто все, что я пытаюсь сделать. Это фрагмент из более крупного кода.

+1

Что ваш вопрос? Вы протестировали код? Это работает? Если нет, сообщите точное сообщение об ошибке, которое вы получите, или поведение, которое вы видите. – Dukeling

+2

взгляните на 'int.TryParse', это, вероятно, то, что вы ищете. Он преобразует строку в целое число, и сказал, что если преобразование было успешным или нет. – tigrou

+0

Возможный дубликат [Проверить, является ли пользовательский ввод числом] (http://stackoverflow.com/questions/14304591/check-if-user-input-is-a-number) – Dukeling

ответ

7
Console.Write("Enter a Number\n"); 
string input = Console.ReadLine(); //get the input 
int num = -1; 
if (!int.TryParse(input, out num)) 
{ 
    Console.WriteLine("Not an integer"); 
} 
else 
{ 
    ... 
} 

Int.TryParse вернет ложь, если строка не является допустимым числом, и наоборот

+0

Это работает, только если (! Int.TryParse (input, out num)). Строчная строка int, но тогда она не работает правильно. Он не показывает пользовательскую ошибку – DDJ

+0

Ошибка при использовании капитала I в 'Int' 'Имя' Int 'не существует в текущем контексте " – DDJ

+0

@SDJ исправлено, используйте нижний регистр int вместо – Steve

0

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

Console.Write("\nEnter a Whole Number (Such as 12)\n"); 
string Input = Console.ReadLine(); 

char firstChar = Input[0]; 
bool isNumber = Char.IsDigit(firstChar); 

if (!isNumber) 
{ 
    Console.WriteLine("Not an integer"); 
} 
else 
{ 
....... 
} 
Смежные вопросы