NotAComputerScienceStudent Ответов: 1

Я все время получаю входную строку в неправильном формате


Я все время получаю это, на этикетке написано только 0.

Что я уже пробовал:

int HighScore = int.Parse(label3.Text);

1 Ответов

Рейтинг:
11

OriginalGriff

Это оказывается не так: я пытался, и Вы тоже можете:

int HighScore = int.Parse("0");
Замените фиксированную строку текстовым полем, и она все еще работает для меня:
int HighScore = int.Parse(tbUserInput.Text);
Или ярлык:
int HighScore = int.Parse(labHighScore.Text);
Ни один из них не создает проблем.

Итак, проблема в том, что label3 не содержит того, что вы думаете, что он делает. А почему бы и нет? Что в нем содержится? Есть вопросы, на которые только вы можете ответить - а это значит, что все будет зависеть от вас!

К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Поместите точку останова в эту строку функции, щелкнув по ней, и с помощью меню отладки выберите пункт "переключить точку останова", а затем запустите свой код через отладчик. Когда он достигнет точки останова, он остановится и даст вам контроль, чтобы вы могли посмотреть, что содержат вещи, наведя на них курсор мыши.
Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!

Но я подозреваю, что у вас неправильный ярлык ... и это приводит к двум серьезным предположениям:
1) прекратите использовать имена Visual Studio по умолчанию для всего - вы можете помнить, что "TextBox8" - это номер мобильного телефона сегодня, но когда вам придется изменить его через три недели, вы это сделаете? Используйте описательные имена - например, "tbMobileNo", - и ваш код станет легче читать, более самодокументируемым, легче поддерживать - и на удивление быстрее кодировать, потому что Intellisense может добраться до "tbMobile" за три нажатия клавиш, где "TextBox8" занимает размышление и 8 нажатий клавиш...
2) прекратите использовать int.Parse и используйте int.Вместо этого TryParse - он возвращает значение true / false, чтобы сказать "это сработало" / "это не сработало", и вы можете использовать его, чтобы ваш пользователь знал, что есть проблема, а не просто сбой.