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
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
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.
D'accord mais comment recuperer un caractère ?
Sachant que l'application ne doit pas s'arreter pour lire la caractère...
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.
J'ai déja essayé, cette commande attend que l'on appuie sur ENTRER pour continuer le reste du code.....
tu as 2 solutions :Ou bien ajouter un KeyListener a un composant Swing.
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();
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 )
Cela ne peut pas fonctionner, car cette commande System.in.read() attends une touche avant de continuer le reste du code....
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 } } }
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 ?
OK, je fais essayer cela.
Merci à saod et à xavlours.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager