Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème peut-être avec la boucle, sinon je sais pas...

Anonyme
    30 mars 2011 à 15:58:32

    Bonjour,

    Je viens de commencer le Visual Basic ce matin, et j'en suis aux boucles, donc je suis vraiment débutant. J'ai crée une petite calculatrice toute nulle (d'où son nom calculanulle), mais j'ai un problème : j'ai un menu avec 6 choix ; je fais par exemple le choix 1 pour faire une addition, j'entre mes deux nombre, j'ai le résultat, mais quand le menu revient avec la boucle, j'ai un message "la conversion de la chaîne "" en type 'integer' n'est pas valide". Vous pouvez m'aider ?

    Voilà mon code :

    Module Module1
    
        Sub Main()
    
            Console.WriteLine("Bienvenu sur Calculanulle, ma première calculatrice !")
    
            Dim boucle As Integer = 1
            While boucle = 1
    
                'Menu pour choisir l'opération que l'utilisateur veut faire
                Console.WriteLine()
                Console.WriteLine("Que voulez vous faire ? Je veux :")
                Console.WriteLine("     Faire une addition (choix 1)")
                Console.WriteLine("     Faire une soustraction (choix 2)")
                Console.WriteLine("     Faire une multiplication (choix 3)")
                Console.WriteLine("     Faire une division (choix 4)")
                Console.WriteLine("     Connaitre le reste d'une division (choix 5)")
                Console.WriteLine("     Quitter le programme (choix 6)")
                Console.WriteLine()
                Dim choixVisiteur As Integer
                Console.Write("Entrez votre choix (le numero correspondant) : ")
                choixVisiteur = Console.ReadLine()
                Console.WriteLine()
    
                'Si l'utilisateur choisit l'addition
                If choixVisiteur = 1 Then
                    Dim nombreAdition1 As Integer
                    Dim nombreAdition2 As Integer
                    Console.Write("Entrez le premier nombre : ")
                    nombreAdition1 = Console.ReadLine()
                    Console.Write("Entrez le deuxième nombre : ")
                    nombreAdition2 = Console.ReadLine()
                    Console.WriteLine()
                    Dim nombreAditionResult As Integer = nombreAdition1 + nombreAdition2
                    Console.Write(nombreAdition1 & " + " & nombreAdition2 & " = " & nombreAditionResult)
                    Console.Read()
                End If
    
                'Si l'utilisateur choisit la soustraction
                If choixVisiteur = 2 Then
                    Dim nombreSoustraction1 As Integer
                    Dim nombreSoustraction2 As Integer
                    Console.Write("Entrez le premier nombre : ")
                    nombreSoustraction1 = Console.ReadLine()
                    Console.Write("Entrez le deuxième nombre : ")
                    nombreSoustraction2 = Console.ReadLine()
                    Console.WriteLine()
                    Dim nombreSoustractionResult As Integer = nombreSoustraction1 - nombreSoustraction2
                    Console.Write(nombreSoustraction1 & " - " & nombreSoustraction2 & " = " & nombreSoustractionResult)
                    Console.Read()
                End If
    
                'Si l'utilisateur choisit la multiplication
                If choixVisiteur = 3 Then
                    Dim nombreMultiplication1 As Integer
                    Dim nombreMultiplication2 As Integer
                    Console.Write("Entrez le premier nombre : ")
                    nombreMultiplication1 = Console.ReadLine()
                    Console.Write("Entrez le deuxième nombre : ")
                    nombreMultiplication2 = Console.ReadLine()
                    Console.WriteLine()
                    Dim nombreMultiplicationResult As Integer = nombreMultiplication1 * nombreMultiplication2
                    Console.Write(nombreMultiplication1 & " x " & nombreMultiplication2 & " = " & nombreMultiplicationResult)
                    Console.Read()
                End If
    
                'Si l'utilisateur choisit la division
                If choixVisiteur = 4 Then
                    Dim nombreDivision1 As Integer
                    Dim nombreDivision2 As Integer
                    Console.Write("Entrez le premier nombre : ")
                    nombreDivision1 = Console.ReadLine()
                    Console.Write("Entrez le deuxième nombre : ")
                    nombreDivision2 = Console.ReadLine()
                    Console.WriteLine()
                    Dim nombreDivisionResult As Double = nombreDivision1 / nombreDivision2
                    Console.Write(nombreDivision1 & " : " & nombreDivision2 & " = " & nombreDivisionResult)
                    Console.Read()
                End If
    
                'Si l'utilisateur choisit le modulo
                If choixVisiteur = 5 Then
                    Dim nombreMod1 As Integer
                    Dim nombreMod2 As Integer
                    Console.Write("Entrez le premier nombre : ")
                    nombreMod1 = Console.ReadLine()
                    Console.Write("Entrez le deuxième nombre : ")
                    nombreMod2 = Console.ReadLine()
                    Console.WriteLine()
                    Dim nombreModResult As Integer = nombreMod1 Mod nombreMod2
                    Console.Write("Le reste de " & nombreMod1 & " : " & nombreMod2 & " est " & nombreModResult)
                    Console.Read()
                End If
    
                'Si l'utilisater entre un nombre incorect
                If choixVisiteur > 6 Then
                    Console.Write("Veuillez entrer un nombre correct, merci...")
                    Console.Read()
                End If
                If choixVisiteur < 0 Then
                    Console.Write("Veuillez entrer un nombre corect, merci...")
                    Console.Read()
                End If
    
                'Si l'utilisateur veux quitter le programme
                If choixVisiteur = 6 Then
                    boucle = 2
                End If
    
                'Le retour à la ligne entre la fin de l'utilisation précédente et l'apparition du nouveau menu
                Console.WriteLine()
    
            End While
    
    
        End Sub
    
    End Module


    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2011 à 16:15:41

      Ajoute la balise code stp,car la ca ne donne pas envie de lire ton code :D
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        30 mars 2011 à 16:16:38

        J'ai cherché mais je ne trouve pas cette balise... :(
        Il fallait juste écrire code à la place de secret en fait. ^^
        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2011 à 16:34:57

          Hum as tu teste ton code?

          Sinon le probleme est que tu met un Console.ReadLine(). Si tu ne veux pas afficher apres chaque operation le menu, met la partie qui l'affiche a l'exterieur de ta boucle principale.

          Par contre
          choixVisiteur = Console.ReadLine()
          
          ne devrait pas fonctionner car choixVisiter est de type int et ReadLine() renvoie un string.

          Mais bon pour ce qui est de ton probleme, vire les ReadLine() a la fin de tes if (d'ailleur un switch serait plus approprie) et ca fonctionnera.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            30 mars 2011 à 16:45:14

            Citation

            Hum as tu teste ton code?


            Forcément sinon comment j'aurais pu avoir cette erreur ? o_O

            Citation

            Citation

            choixVisiteur = Console.ReadLine()

            ne devrait pas fonctionner car choixVisiter est de type int et ReadLine() renvoie un string.


            Ça s'était pas écrit dans le cours... :-°

            Citation

            Mais bon pour ce qui est de ton probleme, vire les ReadLine() a la fin de tes if (d'ailleur un switch serait plus approprie) et ca fonctionnera.


            C'est que des Console.Read(), pas des Console.ReadLine, donc je vois pas pourquoi ça marche pas avec, mais bon ça marche sans... Tant mieux ! Merci beaucoup ! :)
            • Partager sur Facebook
            • Partager sur Twitter
              30 mars 2011 à 20:34:04

              Bonsoir,

              Ton probleme doit venir du fait que ta console cherche a ecrire en type "string".
              Et toi tu lui envoie des "integer".
              Donc il faut faire la transfo des integer en string.

              Essaye ca :Console.Write(nombreAdition1.tostring & " + " & nombreAdition2.tostring & " = " & nombreAditionResult.tostring)


              Pour ma part ca fait un bout de temps que j'ai laissé tombé la console, donc a voir.

              @+
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                30 mars 2011 à 20:37:01

                Je comprend pas le .tostring, il n'y a pas ça dans le tuto. Bon en tout cas demain je change le integer en string et si ça marche pas j'essaye ta technique. Merci de la réponse ! :)
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  30 mars 2011 à 20:40:12

                  Ouais sauf que c'est ToString(). Et que c'est implicite donc pas besoin (en C# du moins).

                  Pour convertir les entrées de l'utilisateur en nombre, c'est Int.TryParse.
                  T'as intérêt à te faire une méthode qui demande à l'utilisateur d'entrer un nombre, et si ce que l'utilisateur écrit n'en est pas un le redemande.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    30 mars 2011 à 20:47:50

                    Ouais bon là je comprend plus rien... :-° Je teste déjà en mettant ma variable du choix en string...
                    Bon alors j'ai remplacé integer par string et donc j'ai remis le Console.Read() juste à la fin de la condition de l'addition, mais je retrouve le même problème. Juste au cas ou ça aurais une importance, j'en suis en plein milieu du chapitre des boucles.
                    Mais maintenant j'ai plus le même message mais j'ai "La conversion de la chaîne "" en type 'Double' n'est pas valide"... :(
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème peut-être avec la boucle, sinon je sais pas...

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown