Problème de l'utilisation de Scanner ( dans java )

Problème de l'utilisation de Scanner ( dans java ) - Java - Programmation

Marsh Posté le 05-08-2011 à 02:38:31    

Bonjour, je suis un débutant en JAVA extrêmement motivé, et après une journée entière de recherche je suis désespéré en j'en viens à vous demander de l'aide ...
 
Voici mes lignes de codes :
 
import java.util.Scanner;
 
 
public class Zouzou {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
 Scanner sc = new Scanner(System.in);
 String nom;
 System.out.println("Quel est votre prénom ? JOJO" );
 nom = sc.nextLine();
 System.out.println("Bonjour" +nom ); }
}
     
 
Voila c'est très simple ... mais mon soucis est lorsque je démarre le " programme " seule cette phrase s'affiche dans ma console : Quel est votre prénom ? JOJO
 
Je ne comprends pas pourquoi l'outils scanner ne reconnais pas le reste ... et cela me bloque complètement pour la suite de mon apprentissage....
 
Je vous remercie infiniment !
 
Zac.


Message édité par relax00587 le 05-08-2011 à 13:26:20
Reply

Marsh Posté le 05-08-2011 à 02:38:31   

Reply

Marsh Posté le 05-08-2011 à 10:55:48    

Citation :

Je ne comprends pas pourquoi l'outils scanner ne reconnais pas le reste

:??:  
Si tu tapes qque chose (suivi de retour chariot) après qu'il ait affiché "Quel est votre prénom ? JOJO" il se passe quoi?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-08-2011 à 13:13:11    

Salut, merci d'avoir répondu.
 
Bin si je tappe quelque chose après, cette chose s'affiche bel et bien dans la console.
 
Cependant tout fonctionne comme si le programme oubliait complètement ces deux lignes de code :
 
 nom = sc.nextLine();
 System.out.println("Bonjour" +nom )
 
Le plus intriguant c'est que Eclipse ne me signale pas d'erreur dans la saisie. Tout semble aller bien.
 
 
 

Reply

Marsh Posté le 05-08-2011 à 16:47:43    

relax00587 a écrit :

Salut, merci d'avoir répondu.
 
Bin si je tappe quelque chose après, cette chose s'affiche bel et bien dans la console.
 
Cependant tout fonctionne comme si le programme oubliait complètement ces deux lignes de code :
 
 nom = sc.nextLine();
 System.out.println("Bonjour" +nom )
 
Le plus intriguant c'est que Eclipse ne me signale pas d'erreur dans la saisie. Tout semble aller bien.
 
 
 

Donc tu ne comprends pas ce que fait ton programme.  
Que voudrais tu donc avoir dans nom quand il fait sc.nextLine(); ?
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-08-2011 à 20:59:25    

Je voudrais qu'il récupère ce que j'ai tappé ( à savoir le dernier mot de la ligne précédente ), et ainsi  qu'il définisse le nom = JOJO
 
C'est bien le principe du Scanner , non ?

Reply

Marsh Posté le 05-08-2011 à 21:06:24    

Sauf que justement, la, tu as pas tapé le texte.
Le scanner, il va récupérer le texte de System.in, par construction, tandis que toi, tu envoies du texte sur System.out (qui de toute façon n'est pas dispo en lecture, il me semble).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-08-2011 à 22:21:25    

ah, et comment dois je modifier mon code pour que le scanner puisse récupérer mon texte ? où dois je taper mon texte ?

Reply

Marsh Posté le 05-08-2011 à 23:11:22    

je veux que s'affiche dans ma console :
 
Quel est votre prénom ? JOJO
 
Bonjour JOJO
 
Je veux que le programme recupère l'entrée " JOJO "

Reply

Marsh Posté le 06-08-2011 à 01:38:34    

Code :
  1. import java.util.Scanner;
  2.  
  3. public class Zouzou {
  4.  
  5.    /**
  6.     * @param args
  7.     */
  8.    public static void main(String[] args) {
  9.     // TODO Auto-generated method stub
  10.  
  11.     String texte = "Quel est votre prénom ? JOJO";
  12.     System.out.println(texte);
  13.     Scanner sc = new Scanner(texte);
  14.     String nom = "";
  15.     while (sc.hasNext()) {
  16.         nom = sc.next();
  17.     }
  18.     System.out.println("Bonjour " +nom ); }
  19. }


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-08-2011 à 03:12:39    

Merci effectivement cela fonctionne =) !!!!
 
Je m'étais enfaite inspiré de ce tutoriel, qui visiblement ne fonctionne pas !
 
http://www.siteduzero.com/tutoriel [...] avier.html
 
C'est très étrange ... qu'en penses tu ?

Reply

Marsh Posté le 06-08-2011 à 03:12:39   

Reply

Marsh Posté le 06-08-2011 à 03:23:50    

une question également ...
 
pourquoi a t-on  
String nom = "";
 
et non pas simplement  
String nom;  
( sous forme classique : type de variable + nom de variable )

Message cité 1 fois
Message édité par relax00587 le 06-08-2011 à 03:24:09
Reply

Marsh Posté le 06-08-2011 à 13:03:27    

relax00587 a écrit :

Merci effectivement cela fonctionne =) !!!!
 
Je m'étais enfaite inspiré de ce tutoriel, qui visiblement ne fonctionne pas !
 
http://www.siteduzero.com/tutoriel [...] avier.html
 
C'est très étrange ... qu'en penses tu ?

Je pense que tu n'as pas compris l'exemple:

Code :
  1. Scanner sc = new Scanner(System.in);
  2. System.out.println("Veuillez saisir un mot :" );
  3. String str = sc.nextLine();
  4. System.out.println("Vous avez saisi : " + str);


La 3e ligne:
Le code attends que tu saisisse quelque chose au clavier, et tu fasses retour chariot ensuite.
Quand c'est fait, ce qui a été tapé est envoyé dans System.in, et c'est pour ça que ton scanner (déclaré comme new Scanner(System.in)) peut scanner le texte tapé.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-08-2011 à 13:09:08    

relax00587 a écrit :

une question également ...
 
pourquoi a t-on  
String nom = "";
 
et non pas simplement  
String nom;  
( sous forme classique : type de variable + nom de variable )

Parce que ça plait pas au compilateur java, qui pense que si sc.hasNext() renvoie faux, on va jamais faire nom = sc.next(), et donc qu'on va arriver à System.out.println("Bonjour " +nom ); avec une variable nom pas initialisée (et donc comme toute variable de type pas primitif, initialisée par défaut à null). Alors que si j'initialise nom avec une chaine vide, ça lui convient.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-08-2011 à 16:26:57    

gilou a écrit :

Je pense que tu n'as pas compris l'exemple:

Code :
  1. Scanner sc = new Scanner(System.in);
  2. System.out.println("Veuillez saisir un mot :" );
  3. String str = sc.nextLine();
  4. System.out.println("Vous avez saisi : " + str);


La 3e ligne:
Le code attends que tu saisisse quelque chose au clavier, et tu fasses retour chariot ensuite.
Quand c'est fait, ce qui a été tapé est envoyé dans System.in, et c'est pour ça que ton scanner (déclaré comme new Scanner(System.in)) peut scanner le texte tapé.
A+,


 
Je suis vraiment désolé mais quand je tape :
 
    Scanner sc = new Scanner(System.in);
    System.out.println("Veuillez saisir un mot : JOJO" );
    String str = sc.nextLine();
    System.out.println("Vous avez saisi : " + str);
 
La console me donne :
 
     Veuillez saisir un mot : JOJO
 
     Vous avez saisi : (//ici il y a un blanc)
 
:( :(
 
 
 

Reply

Marsh Posté le 06-08-2011 à 18:55:47    

Eh bien c'est que tu as un problème avec ton environnement java, parce que dans une console, voici ce que j'obtiens:

C:\Java>java Zouzou
Veuillez saisir un mot : JOJO


Et la ça attend mon entrée au clavier, pour l'éternité, si jamais je tape rien.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed