Double.Parse [Résolu]

Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
- - Dernière réponse : cs_ShayW
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46
0
Merci
merci
Commenter la réponse de cs_ShayW