Double.Parse

Résolu
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 28 mars 2011 à 17:44
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 29 mars 2011 à 16:17
Bonjour à tous

un problème avec ce code
le bug
Double.Parse(element.ToString) ne reconnait le dernier caractère de str 0

 Private polynom As New List(Of String)
Sub parsepolynum()
        Dim str() As Char
        Dim nombre As String
        Dim flagnombre As Boolean
        ' str = polynum.Text.ToCharArray
        str = "12x^2+3x^0".ToCharArray
        nombre = String.Empty
        flagnombre = False
        For Each element As Char In str
            Try
                If Double.Parse(element.ToString) Then
                    flagnombre = True
                    nombre &= element.ToString
                End If
            Catch ex As Exception
                If flagnombre Then
                    polynom.Add(nombre)
                End If
                flagnombre = False
                polynom.Add(element.ToString)
                nombre = String.Empty
            End Try
        Next

    End Sub

merci

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 07:22
Normal, puisque tes Add ne se font qu'en cas de levée d'exception...
tu sort de ta boucle avec potentiellement un nombre en cours...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 07:31
Inutile de mettre ToCharArray ni autant de ToString...

évitons également les exceptions hormis les cas de gestion d'erreur.

nettoyons donc cela :
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each token As String In Parse("12x^2+3x^0")
            MessageBox.Show(token)
        Next
    End Sub

    Function Parse(ByVal Polyome As String) As List(Of String)
        Dim nombre As String = String.Empty
        Dim chiffre As Integer
        Parse = New List(Of String)
        For Each caractere As Char In Polyome
            If Integer.TryParse(caractere, chiffre) Then
                nombre &= caractere
                Continue For
            ElseIf nombre.Length Then
                Parse.Add(nombre)
                nombre = String.Empty
            End If
            Parse.Add(caractere)
        Next
        If nombre.Length Then
            Parse.Add(nombre)
        End If
    End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
29 mars 2011 à 16:17
merci
0
Rejoignez-nous