2015-09-25 4 views
-3

Так им пытаются просто проверить, если моя переменная вводится в виде строки, я хочу, если заявление, чтобы пройти и не необработанное исключение ...Validate, если число равно строка

Вот мой код:

Console.Write("Input: "); 
int i; 
bool success = int.TryParse("", out i); 

if (success) { 
    Console.WriteLine("Enter Integer!"); 
} else { 
    i = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Output: ", i); 
} 

Так что я делаю неправильно здесь? Каждый раз, когда я вхожу в строку, я не добираюсь до утверждения if, только сбой!

+1

Какое исключение вы получаете? – rmn36

+3

Прочтите документы! 'TryParse' возвращает true *, если номер успешно разобран *. Таким образом, ваши 'if' и' else' неправильны. Кроме того, вам не нужно 'Convert.ToInt32', потому что * вы просто проанализировали свой номер *. –

+0

Если вы получаете сбой, вы также получите некоторую обратную связь. Какая ошибка? Он содержит предлагаемый курс действий? – Jeroen

ответ

1

Я думаю, что вы должны сделать это таким образом

Console.Write("Input: "); 
int i; 

bool success = int.TryParse(Console.ReadLine(), out i); //Getting the input and checking it 

if (!success) 
{ 
    Console.WriteLine("Enter Integer!"); 
} 

else 
{  
    Console.WriteLine("Output: ", i); 
} 

В своем коде вы получаете значение в операторе еще и если ваш вклад не может быть разобран на int, то исключение бросков.

+0

Если утверждения по-прежнему ошибочны – rmn36

+0

Да, я обновил его. –

3

Проблема в вашем коде заключается в том, что значение, переданное TryParse, не имеет значения для значения, переданного Convert.ToInt32. Вы должны прочитать значение, а затем вызвать TryParseс тем же значением:

Console.WriteLine("Enter an integer:"); 
var s = Console.ReadLine(); 
int i; 
if (int.TryParse(s, out i)) { 
    Console.WriteLine("You entered an integer"); 
} else { 
    Console.WriteLine("You did not enter an integer"); 
} 

Если вы хотите, чтобы продолжить чтение, пока конечный пользователь не введет правильный int, добавьте петлю, как это:

int i; 
do { 
    Console.WriteLine("Enter an integer:"); 
    var s = Console.ReadLine(); 
} while (!int.TryParse(s, out i)); 
Смежные вопросы