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

Entrée/Sortie Java Discussion :

Sortir d'un while par l'appui d'une touche ?


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Sortir d'un while par l'appui d'une touche ?
    Bonjour,

    Comment faire pour sortir d'une boucle while en appuyant sur une touche (ex : q).

    L'application est en mode Console.





    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Tu peux faire une variable booléenne qui change d'état quand t'appuies sur la touche que tu veux, et tu rajoutes un test sur cette variable dans ton test de boucle.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    D'accord mais comment recuperer un caractère ?

    Sachant que l'application ne doit pas s'arreter pour lire la caractère...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 102
    Points
    102
    Par défaut
    Essaye d'utiliser l'objet System.in, c'est l'entrée standard quand tu es en mode console, un truc du genre :

    int toucheTapee = System.in.read();

    Le problème, c'est qu'il me semble qu'il faut boucler pour tester à chaque fois s'il n'y a pas un truc de rentrer, mais je suis pas sûr.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai déja essayé, cette commande attend que l'on appuie sur ENTRER pour continuer le reste du code.....

  6. #6
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    tu as 2 solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		new Thread() {
    		    public void run() {
    		        try {
    		            System.in.read();
     
    		            //monBooleen = !monBooleen;     Ca va pas marcher ca !!
     
                      setMonBooleen(true); // c'est une methode definie dans ta classe. Comme ca ca va marcher !
    		        }
    		        catch (IOException e) {
    		             // la tu fais ce que tu veux, t'es dans un pays libre
    		        }
    		    }
    		 }.start();
    Ou bien ajouter un KeyListener a un composant Swing.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    OK, je vais essayer la premiere solution

    Tu fais comment pour le mettre dans le code de la boucle ?

    Merci.

    (pour la 2ieme, comme c'est une application Texte et non graphique )

  8. #8
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Cela ne peut pas fonctionner, car cette commande System.in.read() attends une touche avant de continuer le reste du code....

  9. #9
    Membre averti Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Points : 439
    Points
    439
    Par défaut
    voila quelque chose qui devrai t'aider:


    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
     
    class prog {
      public static void main(String[] args) {
        boucle b;
        touche t = new touche(b).start();
        b = new boucle();
      }
    }
     
     
    class touche extends Thread {
      private boucle b;
      public touche(boucle b) {
        this.b=b;
      }
      public void run () {
        String lettre = Lire.S(); // ou System.in.read() 
        b.tourne=false;
      }
    }
     
     
    class boucle {
      public boolean tourne = true;
      public boucle() {
        while(tourne) {
            //instruction
        }
      }
    }

  10. #10
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Le point important c'est de faire System.in.read() dans un thread different de celui dans lequel tu executes ton code.
    Ainsi le read() bloque le thread cree specialement pour ca, alors que ton thread principal continue.
    Cependant comme ils partagent une variable booleenne, le thread lecteur de clavier peut dire a l'autre ("eh on a appuye sur le clavier !!") en changeant la valeur de cette variable.

    Eget éclair ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  11. #11
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [Résolu] Merci
    OK, je fais essayer cela.

    Merci à saod et à xavlours.

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

Discussions similaires

  1. Interrompre une boucle while à l'appuie d'une touche
    Par robotsflo dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2013, 19h04
  2. Réponses: 3
    Dernier message: 04/04/2007, 17h22
  3. [VBA-E] Pause arréter par l'appui d'une touche
    Par gengen dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/05/2006, 14h03
  4. Réponses: 3
    Dernier message: 24/01/2005, 12h57
  5. Simuler l'appui sur une touche, au niveau système
    Par debutant java dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/08/2004, 13h51

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