Double.Parse [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
merci