Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme de lecture avec Scanner

    25 mars 2010 à 12:49:40

    Bonjour à tous
    voici mon code :

    System.out.println("Donnez l'adresse de l'enseignant ");
    			String adresse = sc.next();
    System.out.println("Donnez la charge Horaire de l'enseignant ");
    			int chargeHoraire = sc.nextInt();
    


    Le problème quand j'affecte une valeur pour la variable adresse comme celle ci "Rue de Murier 5" et je fait entre la valeur 5 est affecté à la variable charge_Horaire

    Merci beaucoup à votre réponse
    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2010 à 19:00:27

      Il faut faire un sc.nextLine() pour l'adresse pour prendre toute la ligne et pas seulement le premier mot.
      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2010 à 21:47:21

        Merci à votre réponse mais quand j'ai utilisé sc.nextLine il a sauté à la ligne suivante sans qu'il m'attend que je tape une valeur
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2010 à 22:00:46

          Tu peux remplacer next() par nextLine() et nextInt() par next().
          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2010 à 22:31:26

            Bin non si on veut un int on fait nextInt de façon à directement parser en int, il faudrait bien sur rajouter le try catch pour l'exception et dans le catch vers un nextLine pour faire le ménage.
            Sinon je comprends pas ton problème avec nextLine, tu tapes ce que tu veux puis tu appuie sur la touche "enter" et ensuite tu tape ton nombre et tu appuis à nouveau sur "enter" je vois pas comment ca ne pourrait pas marcher.
            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2010 à 23:30:23

              Le code suivant marche nickel

              public static void main (String [] args) {
              		Scanner sc = new Scanner(System.in);
              		
              		System.out.println("Donnez l'adresse de l'enseignant ");
              		String adresse = sc.nextLine();
              	
              		System.out.println("Donnez la charge Horaire de l'enseignant ");
              		int chargeHoraire = sc.nextInt();
                              sc.nextLine();
              		
              		System.out.println("Adresse : " + adresse + "\nChargeHoraire : " + chargeHoraire );
              	}
              


              Wapiti89
              • Partager sur Facebook
              • Partager sur Twitter
                26 mars 2010 à 17:25:47

                Citation : Anarion9998

                Bin non si on veut un int on fait nextInt de façon à directement parser en int, il faudrait bien sur rajouter le try catch pour l'exception et dans le catch vers un nextLine pour faire le ménage.
                Sinon je comprends pas ton problème avec nextLine, tu tapes ce que tu veux puis tu appuie sur la touche "enter" et ensuite tu tape ton nombre et tu appuis à nouveau sur "enter" je vois pas comment ca ne pourrait pas marcher.


                En principe tu as raison, sauf que chez lui ça ne marche pas, car il ne montre pas tout le code.
                En fait il a dû placer son code dans une boucle, et le nextInt() ne prend pas le retour à la ligne, donc il reste dans le buffer.
                Donc ce que j'ai dit dans le premier post ne fonctionnera pas.

                Donc plusieurs solutions : soit tu vides ton Scanner à la fin de ta boucle avec un nextLine() pour virer le passage à la ligne qui reste dans le scan, soit tu réinstancies un nouveau Scanner.

                Des deux solutions, réinstancier le Scanner est sûrement la plus propre.
                • Partager sur Facebook
                • Partager sur Twitter

                Probléme de lecture avec Scanner

                × 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