IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Mon code VB n'accepte pas "or" [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut Mon code VB n'accepte pas "or"
    Mes chers amis bonsoir, j'ai besoin de votre aide.

    Je ne sais pas pourquoi ce code n’accepte pas "or"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Module Module1
     
        Sub Main()
            Console.WriteLine("entrer le premier nombre")
            Dim pnombre As Integer = Console.ReadLine()
            Console.WriteLine("entrer le second nombre")
            Dim dnombre As Integer = Console.ReadLine()
            Console.WriteLine("Quelle opération voulez vous faire? ")
            Dim R As Char = ""
            Console.WriteLine("si addition tapez 'A'")
            Console.WriteLine("si soustraction tapez 'S'")
            Console.WriteLine("si mustiplication tapez 'M'")
            Console.WriteLine("si division tapez 'D'")
            R = Console.ReadLine()
            If R = "A" Or "a" Then
                plus(pnombre, dnombre)
            ElseIf R = "S" Or "s" Then
                mois(pnombre, dnombre)
            ElseIf R = "M" Or "m" Then
                fois(pnombre, dnombre)
            ElseIf R = "D" Or "d" Then
                division(pnombre, dnombre)
            End If
            Console.ReadKey()
        End Sub
        Sub plus(ByVal nombre1 As Integer, ByVal nombre2 As Integer)
            Console.WriteLine(nombre1 + nombre2)
        End Sub
        Sub mois(ByVal nombre1 As Integer, ByVal nombre2 As Integer)
            Console.WriteLine(nombre1 - nombre2)
        End Sub
        Sub fois(ByVal nombre1 As Integer, ByVal nombre2 As Integer)
            Console.WriteLine(nombre1 * nombre2)
        End Sub
        Sub division(ByVal nombre1 As Integer, ByVal nombre2 As Integer)
            Console.WriteLine(nombre1 / nombre2)
        End Sub
     
    End Module
    il me donne comme message:La conversion de la chaîne "a" en type 'Boolean' n'est pas valide.

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    o_O...... il faut revoir la table de vérité pour comprendre ta grossière erreur !!




    Pour corriger ton problème il faut que tu ré-évalues ta condition pour "a" c'est à dire comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            R = Console.ReadLine()
            If R = "A" Or R = "a" Then
                plus(pnombre, dnombre)
            ElseIf R = "S" Or R = "s" Then
                mois(pnombre, dnombre)
            ElseIf R = "M" Or R = "m" Then
                fois(pnombre, dnombre)
            ElseIf R = "D" Or R = "d" Then
                division(pnombre, dnombre)
            End If
            Console.ReadKey()


    Bonne lecture.
    A+

  3. #3
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Une autre approche dites du "éviter de se prendre la tête pour rien" ; serait de faire en sorte de n'avoir pas à utiliser de Or, pour cela plusieurs méthodes :

    convertir la lecture en "tout minuscule" ou "tout majuscule" comme ça on teste directement en minuscule ou en majuscule
    utiliser une méthode de comparaison insensible à la casse (= le fait que ce soit en minuscule ou en majuscule)
    utiliser l'opérateur like en lui passant une classe de caractère contenant les 2 possibilités (minuscules et majuscules) [là c'est déjà plus du bricolage par rapport aux 2 première]
    etc.

  4. #4
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut OR
    wallace1, merci beaucoup;
    c'est l'erreur de débutant
    Maintenant ça marche Nickel
    Merciiiiiiiii

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par stracoma Voir le message
    wallace1, merci beaucoup;
    c'est l'erreur de débutant
    Maintenant ça marche Nickel
    Merciiiiiiiii
    Je souhaitais resté dans ton contexte mais il est clair que l'approche d'ami Sehnsucht est bien moins prise de tête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            R = Console.ReadLine()
            If R.ToLower = "a" Then
                plus(pnombre, dnombre)
            If R.ToLower = "s" Then
                mois(pnombre, dnombre)
            End If
    A+

  6. #6
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    Sehnsucht
    Effectivement c'est plus pratique de mettre toute la saisie en majuscule ou miniscule, mais étant débutant j'explore toutes les pistes.
    Mais opérateur Like, je connais pas (j'y arriverai dans le tuto)
    Merci

  7. #7
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    @wallace1:
    Dans ce cas, de 2 choses l'une, soit tu appliques directement le .ToLower (ToLowerInvariant serait sans doute mieux même) sur le Console.ReadLine histoire de pas le faire 50 fois (bien sûr si on doit conserver la valeur initiale avec sa casse là, c'est pas la bonne approche) ; soit utilises un Select Case au lieu d'un enchainement de If ou de If/Else If (dans un Select Case, le "critère" n'est évalué qu'une seule fois )

  8. #8
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut
    C'est bien ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     R = Console.ReadLine().ToLower
            Select Case R
                Case "a"
                    plus(pnombre, dnombre)
                Case "s"
                    mois(pnombre, dnombre)
                Case "m"
                    fois(pnombre, dnombre)
                Case "d"
                    division(pnombre, dnombre)
            End Select
    J'avance, merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon code behind n'est pas exécuté sous Visual Web
    Par mourmaux dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/09/2008, 19h07
  2. [Smarty] Mon code PHP n'est pas interprété
    Par dorian53 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 17/12/2007, 15h49
  3. Mon code ne s'éxécute pas
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/10/2005, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo