C# : Comment créer un "if" dépendant de "Console.ReadLine" ?
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

C# : Comment créer un "if" dépendant de "Console.ReadLine" ?



  1. #1
    chess_yuss

    C# : Comment créer un "if" dépendant de "Console.ReadLine" ?


    ------

    Bonsoir, je me prépare actuellement à un examen et j'ai donc décider de créer quelques programmes pour m'entraîner.
    Je travaille actuellement sur une méthode qui me permettrait de demander un nombre réel et retourner la racine carré de celui-ci, et, dans le cas où ce n'est pas un nombre réel qui est saisi, indiquer un message demandant la saisie d'un autre nombre et de relancer la méthode de nouveau (une boucle for par exemple).
    Jusqu'a présent j'ai :

    Code:
     public static void Main() {
                Console.Title = " Auteur    :     ######    ";
                double x, w;
                RacineCarreReel(out x, out w);
                
                Console.WriteLine("La racine carrée de " + x  + " est " + w);
                
    
            
            } // fin méthode Main()
    
            private static double RacineCarreReel(out double n, out double w) {
                
                Console.WriteLine("Donnez un nombre réel :  ");
                if (Console.ReadLine ) {Console.WriteLine("Veuillez donner un NOMBRE RÉEL");
                    break;
                    Console.Clear();          
                    else n = double.Parse(Console.ReadLine());
                    } // fin if
                return w = Math.Sqrt(n);           
            }
    Comme vous le voyez j'ai voulu indiquer dans le if que, si le readline était différent d'un réel, le programme devrait indiquer un certain message. Mais que dois-je écrire après le "!=" pour que le programme comprenne ? J'ai aussi plein d'autres erreurs par exemple le else qui est sous-ligné en rouge, je ne comprends pas pourquoi ?

    Merci d'avance pour vos réponses

    -----
    Dernière modification par yoda1234 ; 10/10/2011 à 17h44. Motif: anonymisation

  2. #2
    Fanch5629

    Re : C# : Comment créer un "if" dépendant de "Console.ReadLine" ?

    Bonjour.

    Il faut gérer les exceptions générées par la méthode Parse dans des blocs try, catch.
    La maîtrise du traitement des exceptions est incontournable en C#.

    Exemple:
    Code:
    try
    {
    double x = Double.Parse(Console.ReadLine());
    } catch(FormatException e) {
    // L'entrée n'est pas un format de nombre valide. Faire quelque chose.
    }
    Cordialement.

  3. #3
    Gunman

    Re : C# : Comment créer un "if" dépendant de "Console.ReadLine" ?

    Soit ça, soit utiliser la méthode Double.TryParse, pour un traitement plus "doux" : http://www.dotnetperls.com/double-parse

    Par contre, je ne vois pas de boucle dans ta fonction.

  4. #4
    invite4492c379

    Re : C# : Comment créer un "if" dépendant de "Console.ReadLine" ?

    Citation Envoyé par chess_yuss Voir le message
    Bonsoir, je me prépare actuellement à un examen et j'ai donc décider de créer quelques programmes pour m'entraîner.
    Hello Youssef, je vois à ton code (qui doit te générer des erreurs de compilations) que tu es débutant, donc nous allons commencer par le début.

    Citation Envoyé par chess_yuss Voir le message
    Je travaille actuellement sur une méthode qui me permettrait de demander un nombre réel et retourner la racine carré de celui-ci, et, dans le cas où ce n'est pas un nombre réel qui est saisi, indiquer un message demandant la saisie d'un autre nombre et de relancer la méthode de nouveau (une boucle for par exemple).
    Bien, tu as formulé en Français un algo tout à fait correct. Si je manipule un peu ton texte pour formuler explicitement la boucle on arrive à :

    Tant que l'utilisateur n'a pas donné un réel positif, je lui en demande un
    Je calcule la racine carré de ce nombre
    J'affiche le résultat

    puis à :

    Code:
    x est un réel donné en entrée
    w est un réel donné en sortie qui contiendra la racine carrée de x
    s est la chaine entrée par l'utilisateur
    
    on initialise x à 0
    on initialise w à 0
    on initiliase s à "" la chaine vide
    
    tant que (s ne représente pas un nombre réel positif)
        demander s
        x = transformer en réel(s)
    fin tant que
    
    w = racine carré(x)
    puis au code C# ...

    Peux-tu avec ces indication réessayer d'écrire la méthode ?

    Citation Envoyé par chess_yuss Voir le message
    Jusqu'a présent j'ai :

    Code:
     public static void Main() {
                Console.Title = " Auteur    :     #####    ";
                double x, w;
                RacineCarreReel(out x, out w);
                
                Console.WriteLine("La racine carrée de " + x  + " est " + w);
                
    
            
            } // fin méthode Main()
    
            private static double RacineCarreReel(out double n, out double w) {
                
                Console.WriteLine("Donnez un nombre réel :  ");
                if (Console.ReadLine ) {Console.WriteLine("Veuillez donner un NOMBRE RÉEL");
                    break;
                    Console.Clear();          
                    else n = double.Parse(Console.ReadLine());
                    } // fin if
                return w = Math.Sqrt(n);           
            }
    Comme vous le voyez j'ai voulu indiquer dans le if que, si le readline était différent d'un réel, le programme devrait indiquer un certain message. Mais que dois-je écrire après le "!=" pour que le programme comprenne ? J'ai aussi plein d'autres erreurs par exemple le else qui est sous-ligné en rouge, je ne comprends pas pourquoi ?

    Merci d'avance pour vos réponses
    Sinon concernant ton code j'ai plusieurs remarques :

    * Gunman propose fort justement la méthode TryParse. Elle est adaptée pour ton exemple car elle t'évitera ici de gérer les exceptions. TryParse(s, out x) parse la string s et si elle réussi à décoder un double alors elle affecte la valeur décodée à x et renvoie true, sinon il y a une erreur et renvoie false.
    Il faudra, si tu décides de continuer en C# (ou en Java, ou en ...) d'apprendre à gérer les exception comme le fait remarquer Fanch5629, tu ne peux y échapper

    * Tu dois avoir une variable qui contiendra la valeur de la saisie utilisateur (une string), sinon tu ne pourras en manipuler la valeur

    * Ne jamais mettre un paramètre d'entrée en out, jamais never. out ne sert qu'à préciser que ce paramètre va être modifier dans la fonction et que la valeur modifiée sera utilisé par la suite en dehors de la fonction.

    * Il faut faire attention aux accolades :

    Pas bon
    Code:
    if (...)
    {
        ...
        else
        ...
    }
    bon
    Code:
    if (...)
    {
        ....
    }
    else
    {
        ...
    }
    * Il est plus simple d'utiliser la version formattée de WriteLine : WriteLine( "la racine de {0} est {1}", x,w)
    Dans la première chaîne, {0} est remplacé par le paramètre de rang 0 (ici x), {1} par celui de rang 1 (ici w), ...

    Bon courage
    Tu me dis si ces explications ne te semblent pas claires ...
    Dernière modification par yoda1234 ; 10/10/2011 à 17h45. Motif: anonymisation

  5. A voir en vidéo sur Futura
  6. #5
    Fanch5629

    Re : C# : Comment créer un "if" dépendant de "Console.ReadLine" ?

    Et pour aller plus loin, je conseille une visite sur le site de Joseph Albahari et la lecture de son bouquin C# 4.0 in a Nutshell, la bible ...

Discussions similaires

  1. La science du "Comment?" peut-elle dire "POURQUOI?" au moins une fois?
    Par invite33b26c8f dans le forum Epistémologie et Logique (archives)
    Réponses: 83
    Dernier message: 12/07/2017, 22h12
  2. "fondamentales", "dures", "molles" ... : comment classer les sciences ?
    Par Arvirik dans le forum Epistémologie et Logique (archives)
    Réponses: 13
    Dernier message: 22/04/2017, 22h41