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

Langage Java Discussion :

Scanner 2 fois


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut Scanner 2 fois
    Bonjour,

    Si j'utilse Scanner 1 --> çà tourne
    Si j'utilse Scanner 2 --> çà tourne

    Sii j'utilse Scanner 1 puis Scanner 2 , Scanner 2 ne fonctionne plus

    Une idée , merci

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    package ajeter;
     
    import java.util.Scanner; 
     
    public class Scan {
        public static void main(String[] args) { 
     
        	  // SCANNER 1
     
                    Scanner sc = new Scanner(System.in); 
     
                    String s = ""; 
     
                    while(s.compareTo("ok")!=0)
                    {
                    	s = sc.nextLine(); 
                    	System.out.println(s); 
                    }
     
                    sc.close();
     
              // SCANNER 2
     
                    Scanner scan = new Scanner(System.in);
     
                    System.out.println("Entrez un nombre entier à incrémenter :");
     
                    while(scan.hasNext()) {
                    	// Est-ce un int ? On l'incrémente
                    		if (scan.hasNextInt())
                    		{
                    			int nb = scan.nextInt();
                    			System.out.println(nb + " +1 = " + ++nb);
                    			} 
                    			// Ce n'est pas un int, affichage d'un message d'erreur.
                    		else
                    		{
                    			System.out.println(scan.next() + " n'est pas un nombre.");
                    		}                               
                    }
                    scan.close();
     
     
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu ferme le scanner donc tu ferme System.in donc ton application ne peux plus rien recevoir au clavier.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut Bonjour Tchize, bonjour à tous
    Je le ferme, oui, mais après, je le relance ...

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je ne comprends pas pourquoi le fermer pour le ré ouvrir juste après ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par michelp3 Voir le message
    Je le ferme, oui, mais après, je le relance ...
    Non. Une fois qu'un flux est fermé, il est fermé.

    Certains peuvent être recréés depuis le début, mais dans le cas de System.in, d'abord tu n'as rien fait pour le rouvrir, ensuite c'est impossible. C'est l'entrée standard du programme. Après sa fermeture, l'OS a pris les mesures nécessaires et libéré les ressources associées. A plus, fini, terminé.

    Si tu veux pouvoir te servir de System.in, il faut ne pas encore l'avoir fermé.
    Au passage, fermer System.in ne sert à rien. Pourquoi le faire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut
    d'abord tu n'as rien fait pour le rouvrir

    Pour moi, j' ouvre un nouveau Scanner puisque je fais :

    // SCANNER 2

    Scanner scan = new Scanner(System.in);

    Quant à l'utilité de ceci, c'est simplement un Test

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par michelp3 Voir le message
    d'abord tu n'as rien fait pour le rouvrir

    Pour moi, j' ouvre un nouveau Scanner puisque je fais :

    // SCANNER 2

    Scanner scan = new Scanner(System.in);
    Un scanner, oui, mais le flux qu'il va scanner, en l'occurrence System.in, non. C'est le même que celui que tu viens de fermer, et tu n'as rien fait pour qu'il ne soit plus fermé.
    ... Et il n'y a rien à faire puisque c'est impossible, certes.

    Citation Envoyé par michelp3 Voir le message
    Quant à l'utilité de ceci, c'est simplement un Test
    Tu as donc pu tester que cela ne marche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Points : 114
    Points
    114
    Par défaut Thelvin
    Je te remercie pour ta réponse claire et précise

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Piloter un scanner
    Par freegreg dans le forum Windows Forms
    Réponses: 9
    Dernier message: 12/04/2005, 12h34
  2. Sélectionner un même enregistrement deux fois...
    Par Manu0086 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 02/02/2004, 13h09
  3. [Composant] Drag & Drop de plusieurs valeurs à la fois
    Par slowpoke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/12/2003, 10h26
  4. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52
  5. Scanner des mails et récupérer le fichier attaché
    Par delphim dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/04/2003, 09h35

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