VB.Net Преобразование из строки в двойную - PullRequest
1 голос
/ 18 ноября 2010

В моей программе есть ошибка, когда пользователь нажимает кнопку проверки (вычисления), когда в текстовом поле нет ввода, программа отображает эту ошибку: «Преобразование из строки» в тип «Double» недопустимо«.Я хотел бы решить эту проблему, но я не уверен, как сделать преобразование.Я думал, возможно, CType, но я слышу разговоры о разборе.Как мне это сделать?текстовое поле называется mskTxtInput, а объект кнопки называется btnCheck, который выполняет все вычисления и обработку.

Обновление: это мой код, кроме метода синтаксического анализа, поэтому надеюсь, что это немного поможет!

PrivateSub btnCheck_Click (отправитель ByVal как System.Object, ByVal как As System.EventArgs) Обрабатывает btnCheck.Click pic1.Visible = False 'скрыть картинку pic1.Image = My.Resources.A pic2.Image = My.Resources.F

    Dim value As Double
    If Double.TryParse(mskTxtInput.Text, value) = Then
        MsgBox("parsing success") ' parsing worked, so use the value in here 
    Else
        MsgBox("parsing failed") ' parsing failed, so alert the user to that fact 
    End If


    If radAdd.Checked = True Then
        totalNum = num1 + num2


    End If

    If radSub.Checked = True Then
        totalNum = num1 - num2

    End If

    If radMulti.Checked = True Then
        totalNum = num1 * num2



    End If

    If mskTxtInput.Text = totalNum Then
        lblAns.Text = ("Correct!")
        lblAns2.Text = ("Answer is " & totalNum)
        pic1.Visible = True
        wins = wins + 1
        nScore = wins



    Else
        lblAns.Text = ("Incorrect")
        lblAns2.Text = ("Answer should be " & totalNum)
        pic2.Visible = True

    End If

    attempts = attempts + 1
    If attempts = 5 Then
        MessageBox.Show("Game Finished! ", "End Of Game", _
                        MessageBoxButtons.OK, _
                        MessageBoxIcon.Exclamation)
        lblAns.Text = ("You scored " & wins & " Out of 5")
        btnSpin.Enabled = False
        pic1.Visible = False
        pic2.Visible = False
        lblAns2.Text = ""
        lblAns2.Text = "Play again?"
        btnCheck.Enabled = False
        btnNew.Enabled = True
        attempts = 0
        wins = 0
    End If


    mskTxtInput.Clear()
    mskTxtInput.Focus()


End Sub

Ответы [ 4 ]

4 голосов
/ 18 ноября 2010

Попробуйте использовать Метод Double.TryParse (String, Double) , скорее

Что-то вроде

Dim s As String
Dim result As Double
Dim returnValue As Boolean

returnValue = Double.TryParse(s, result)
3 голосов
/ 18 ноября 2010

Используйте метод TryParse, чтобы выполнить синтаксический анализ, чтобы избежать получения исключения в случае неудачного анализа:

Dim value As Double
If Double.TryParse(mskTxtInput.Text, value) Then
  ' parsing worked, so use the value in here
Else
  ' parsing failed, so alert the user to that fact
End If
0 голосов
/ 18 ноября 2010

Используйте статический метод Double.TryParse().Если он возвращает true, то разбор прошел успешно, и вы можете продолжить операцию.Если он возвращает false, то анализ не был успешным, и вы должны показать сообщение об ошибке (используя MessageBox, если хотите) и прервать операцию.

0 голосов
/ 18 ноября 2010

dim iVar как целое число dim sStr как строка

SSTR = ""

ivar = val (sstr)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...