2014-02-01 3 views
2

У меня есть этот код:Как преобразовать строку в int или десятичную?

Console.WriteLine("What is the price of the product?"); 
Decimal price = Decimal.Parse(Console.ReadLine()); 

я беру вход в виде строки, либо как межд или/и десятичное число и преобразует его в переменную. Или хорошо, это мое намерение. Ввод - это цена продукта, и он может быть десятичным или не может. Я вам только набираю ints, он работает, но с десятичными знаками он падает. Я новичок в этом, и я не могу найти ответа.

+2

Что именно вы вводите в окно консоли? – MarcinJuraszek

+1

Сбой, что вы имеете в виду. Покажите трассировку стека или, по крайней мере, сообщение об исключении. –

+1

«Сбой» недостаточно информации. Пожалуйста, покажите свой ввод и исключение. –

ответ

9

Использование TryParse предотвратить исключение:

while (true) 
{ 
    string input = Console.ReadLine(); 
    decimal result; 
    if (decimal.TryParse(input, out result)) 
    { 
      // do your work 
      break; 
    } 
    else 
    { 
      Console.WriteLine("invalid value try again"); 
    } 
} 

Также я использовал while цикл, чтобы заставить пользователя ввести правильный value.If вы не хотите его можно игнорировать цикл.

0

Существует множество способов достижения этого. Например:

string Input = Console.ReadLine(); 
Decimal InputConvertedAsDecimal; 
if (Decimal.TryParse(Input, out InputConvertedAsDecimal) 
{ 
    Console.WriteLine("Inputted number is: " + InputConvertedAsDecimal.ToString(CultureInfo.InvariantCulture)); 
} 
else 
{ 
    Console.WriteLine("Error! Input have a incorrect format to parse."); 
} 
Смежные вопросы