Double.Parse [Résolu]

Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
- - Dernière réponse : cs_ShayW
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
- 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 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
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 a aidé 101 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
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 a aidé 101 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
0
Merci
merci
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.