2015-11-19 6 views
-6

Я пытаюсь сделать некоторые расчеты цен на автомобили. Я попытался получить стоимость автомобиля и преобразовать его в int, а затем умножить значение int на процент, а затем отобразить результат в другом текстовом поле.преобразование строки в int и int в строку C#

Это то, что я сделал, и он бросает исключение:

private void button1_Click(object sender, EventArgs e) 
{ 
    int carPrice = Convert.ToInt32(txtCarPrice.Text); 
    carPrice = int.Parse(txtCarPrice.Text); 
    int downPayment = Convert.ToInt32(txtDownPayment.Text); 
    downPayment = int.Parse(txtDownPayment.Text); 
    downPayment = Convert.ToInt32(carPrice * .2); 
    txtDownPayment.Text = downPayment.ToString("0.#####"); 
} 

Это Бросает формат исключений!

+3

Большинство кода не является необходимым. 'Convert.ToInt32' и' int.Parse' в этом случае ведут себя одинаково. Кроме того, значение 'downPayment' всегда определяется' carPrice', поэтому вы не должны читать чтение с 'txtDownPayment.Text'. –

+0

'Convert.ToInt32 (carPrice * .2);' is not int может быть 'decimal' или' double' –

+0

, какая строка выбрасывает исключение формата? – Phil

ответ

0

У вас есть пара проблем в коде:

  1. Это ситуация, когда строка пустая Convert.ToInt32 и int.Parse выбросит Формат Exception, так что вам нужно, чтобы проверить строку перед разбором.

  2. Результат умножения int на doulbe будет double поэтому вам необходимо хранить его в double переменной. Преобразование результата в `int 'приведет к исключению или потере дробной части.

  3. Вы не должны анализировать значение дважды, используя Convert.ToInt32(txtCarPrice.Text) и int.Parse(txtCarPrice.Text).

  4. Значение txtDownPayment не используется, поэтому вам не нужно его читать и разбирать.

Я думаю, вам нужно что-то вроде этого:

private void button1_Click(object sender, EventArgs e) 
{ 
    if (string.IsNullOrEmpty(txtCarPrice.Text)) 
     return; 
    int carPrice = Convert.ToInt32(txtCarPrice.Text); 
    double downPayment = carPrice * .2; 
    txtDownPayment.Text = downPayment.ToString("0.#####"); 
} 
Смежные вопросы