2015-10-18 3 views
-1

Я продолжаю получать ошибку на строке, в которой указано int userIN = int.Parse (answerBox.Text); Я не понимаю, почему это происходит. Я уверен, что это просто то, что я проглядываю, но я сидел здесь полностью сбитым с толку.Ошибка в программе сложения с добавлением C#

Необработанное исключение типа «System.FormatException» произошло в mscorlib.dll

Дополнительная информация: Входная строка была не в правильном формате.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace RandomAddition 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      // First Random Nummber 
      int rand1; 
      Random rn1 = new Random(); 
      rand1 = rn1.Next(500) + 100; 
      number1.Text = rand1.ToString(); 
      //Second Random Number 
      int rand2; 
      rand2 = rn1.Next(500) + 100; 
      number2.Text = rand2.ToString(); 
      // Answer 
      int anw = rand1 + rand2; 
      int answ = rand1 + rand2; 
      // Check 
      int userIN = int.Parse(answerBox.Text); 
      if (answ == userIN) 
      { 
       feedback.Text = "Correct"; 
      } 
      else 
      { 
       feedback.Text = "incorrect"; 
      } 
     } 
    } 
} 
+0

«Я все время получаю сообщение об ошибке» .... что говорит об ошибке? – Rotem

+0

Что такое ошибка? Какова ценность 'answerBox.Text' и какова ваша' CurrentCulture'? Отлаживайте свой код и рассказывайте нам. –

+0

Необработанное исключение типа «System.FormatException» произошло в mscorlib.dll Дополнительная информация: Строка ввода не была в правильном формате. – TacosaurusRex

ответ

1

Похоже, вы строите угадайшую игру.

Вы пытаетесь сделать parse текст, который находится внутри answerBox, но так как только что загруженная форма, можно предположить, что она пуста.

Разбор пустой строки на int вызовет исключение.

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

0

Если вы попытаетесь разобрать пустую строку (answerBox.Text может быть пустым) на целое число, вы получите FormatException, убедитесь, что текстовое поле содержит допустимое значение.

1

Изменить //Check раздел с помощью int.TryParse вместо int.Parse:

// Check 
int userIN; 
if(int.TryParse(answerBox.Text, out userIN)) 
{ 
    if (answ == userIN) 
    { 
     feedback.Text = "Correct"; 
    } 
    else 
    { 
     feedback.Text = "incorrect"; 
    } 
} 
else 
{ 
    feedback.Text = "incorrect"; 
} 

Таким образом, вы избежите FormatException, когда ваша форма еще пуста.

Cheers

Смежные вопросы