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

avec Java Discussion :

java/scanner et print


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations forums :
    Inscription : Juillet 2013
    Messages : 114
    Points : 47
    Points
    47
    Par défaut java/scanner et print
    Bonjour ou bonsoir !

    je suis débutant en java et j'ai un problème d'affichage.
    Voici le code :
    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
    public static void creer_Compte() {
     Scanner sc = new Scanner(System.in);
            System.out.println("Entrer le numéro d’identification du titulaire du compte");
            int nCl1 = sc.nextInt();
     
            System.out.println("Entrer le nom du titulaire");
            String nCl = sc.nextLine();
            Client cl = new Client(nCl1, nCl);
            cl.toString();
     
            System.out.println("Entrer le numéro  du compte");
            int nCpt = sc.nextInt();
     
            System.out.println("Entrer le taux d'intérêt de ce compte");
            int tIn = sc.nextInt();
     
            Compte cpt = new Compte(nCpt, cl, tIn);
            cl.addCompte(cpt);
            System.out.println(cl.toString());
     
        }
    Et comment il s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    1
    Vous etes un gestionaire
    Entrer le numéro d’identification du titulaire du compte
    Entrer le nom du titulaire
    001
    Entrer le numéro  du compte
    Entrer le taux d'intérêt de ce compte
    101
    5
    Par exemple 101 était saisi avant le "Entrer le taux d'intérêt de ce compte'".

    Merci d'avance
    Cordialement

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Hello,

    Scanner n'est pas fait pour mélanger nextLine() et nextAutreChose().
    Il faut choisir,
    - ou bien tu appelles nextLine() et seulement nextLine()
    - ou bien tu appelles seulement nextInt(), next(), nextDouble() et tout le toutim mais jamais nextLine()
    - ou bien il va falloir faire des trucs qui ont l'air bizarre et sur lesquels on peut se tromper facilement.

    La raison en est :
    - nextInt() lit en s'attendant à trouver un int, lit ce int, puis arrête sa lecture.
    - next() veut renvoyer un String. Il lit jusqu'à trouver quelque chose qui n'est pas un blanc, puis il lit jusqu'à tomber à nouveau sur un blanc, et il renvoie ce qu'il a trouvé entre les deux.
    - nextLine() renvoie tout ce qui se trouve entre maintenant et la prochaine fin de ligne.

    Donc, si ton entrée est

    5 <fin de ligne 1>
    Paul <fin de ligne 2>

    et que tu appelles nextInt() puis nextLine(),
    nextInt() renvoie 5 et s'arrête là,
    puis nextLine() lit ce qu'il y a après et avant la fin de ligne 1, c'est-à-dire rien ou du blanc.
    Ensuite la prochaine chose à lire est Paul. Mais nextLine() a fini son boulot, là. Ce n'est pas à lui de lire la suite.

    Solution :

    Vu que tu lis un nom, je suppose que ce nom a droit aux espaces, donc tu es forcé d'utiliser nextLine(), vu que next() ne convient pas pour lire un nom avec des espaces.
    Il faut donc utiliser nextLine() et seulement nextLine(). Donc remplacer tous les nextInt() par nextLine(). Seulement voilà, ça ne donne pas un int mais une String.
    Donc il faut ensuite convertir cette String en int :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nCl1 = Integer.parseInt(sc.nextInt());
    Autre solution : consommer la fin de ligne après chaque appel de nextAutreChose(). Autrement dit, appeler nextLine() après chaque appel à nextInt() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nCl1 = sc.nextInt();
    sc.nextLine();
    Bien sûr il ne faut jamais oublier de le faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations forums :
    Inscription : Juillet 2013
    Messages : 114
    Points : 47
    Points
    47
    Par défaut Bjr!
    Hello!

    Merci pour la réponse, mais malheureusement n'est pas résolu. certes l'appel de scanner soit d'un seul type mais le problème n'est pas ça seulement car même là où il y a l'appel une seule fois de scanner aussi, le message et l'entrée vont changer des position.

    Donc peut-être je ne fais pas vous comprendre bien, si possible exécutez voir ce qui donne .

    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations forums :
    Inscription : Juillet 2013
    Messages : 114
    Points : 47
    Points
    47
    Par défaut explication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Entrer le numéro d’identification du titulaire du compte
    1
    Entrer le nom du titulaire
    901
    Entrer le numéro  du compte
    Alice
    Entrer le taux d'intérêt de ce compte
    001
    au lieu d'afficher ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    1
    Entrer le numéro d’identification du titulaire du compte
    901
    Entrer le nom du titulaire
    Alice
    Entrer le numéro  du compte
    001
    Entrer le taux d'intérêt de ce compte
    5
    logiquement une fois je choisi 1 le premier doit s'afficher et permet de s'aisir ce qui est demandé mais il affiche le message puis reaffiche ce qui est saisi précédemment

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Pas le temps de répondre, mais montre ton code corrigé au cas où quelqu'un d'autre ait le temps.

    Il n'y a vraiment jamais de raison de pas montrer le code, tu sais.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations forums :
    Inscription : Juillet 2013
    Messages : 114
    Points : 47
    Points
    47
    Par défaut code
    Bjr!

    Certes vous n'avez pas le temps si vous pouvez prendre un peu de votre temps pour m'aider.
    j'ai tenter tous les deux options mais pour le moment avec le deuxieme option et voilà
    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
     
     public static void creer_Compte() {
    //        Scanner sc = new Scanner(System.in);
           System.out.println("Entrer le numéro d’identification du titulaire du compte");
            int nCl1 = sc.nextInt();
            Scanner sc1 = new Scanner(System.in);
            System.out.println("Entrer le nom du titulaire");
            String nCl = sc1.nextLine();
            Client cl = new Client(nCl1, nCl);
            cl.toString();
            Scanner sc2 = new Scanner(System.in);
            System.out.println("Entrer le numéro  du compte");
            int nCpt = sc2.nextInt();
            Scanner sc3 = new Scanner(System.in);
            System.out.println("Entrer le montant à la création");
            Scanner sc4 = new Scanner(System.in);
            double solde = sc4.nextDouble();
            System.out.println("Entrer le taux d'intérêt de ce compte");
            int tIn = sc3.nextInt();
     
        }
    je ne sais pas si le système affiche ainsi .il permute les affichages

  7. #7
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Tu as refait la même erreur dans ta deuxième version du code que dans la première version. Tu utilises à la fois nextLine et d'autres méthodes de lecture. Tu es obliggé d'utiliser nextLine pour le patronyme du client, tu dois donc t'en tenir à cette méthode et utilser la méthode parseInt pour extraire les entiers que tu veux lire. Un dernier détail : tu n'as pas besoin de recréer un scanner pour chaque lecture. Un seul suffit pour faire toutes les lectures.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

Discussions similaires

  1. Java PrintException already printing
    Par haco28 dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 15h28
  2. Java et Scanner
    Par Nadah dans le forum Multimédia
    Réponses: 1
    Dernier message: 16/10/2007, 19h26
  3. probleme avec java.util.Scanner
    Par d-a-v-e dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/05/2006, 22h08
  4. [Java Print] Impression d'un fichier texte
    Par Copps dans le forum Graphisme
    Réponses: 2
    Dernier message: 15/08/2005, 12h12
  5. [Print]Edition en java : JTable ou JasperReports
    Par calimero82 dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 15h50

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