Arret boucle while par une touche [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
-
Bonjour,

J'ai une application en mode Console qui a une boucle(While), Comment faire pour l'arreter par une touche (ex : q ) et que l'application tourne en attendant (ne pas attendre une touche)

ps :
System.in.read() => cette commande attends une touche pour continuer le code... :-(

10 réponses

Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004

J'ai trouvé la solution sur un autre forum en utilisant 2 threads :

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
}
}
}
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

ben si tu veu metre 2 processus en activiter il te faut forcement 2 thread ...
dc un thread a l ecoute du clavier et un autre pour faire la boucle ...
Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004

Merci de la réponse....

Je redoutais cette réponse......bon, je vais voir comment fonctionne les Threads.......
Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004

Et comment faire pour capturer une touche du clavier ?
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
19
Faut utiliser un KeyListener

[Tout le monde a des idées : la preuve, c'est qu'il y en a de mauvaises]
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

et ds ton action tu modifi la valeur de la var qui conditionne la fin de ta boucle ;o) genre : setFin( true )

avec "fin" boolean ds ta condition while ... ;o)
Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004

Tu n'as pas un exemple de code avec ces 2 threads ?
Messages postés
6
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
18 août 2004

Le KeyListener ne fonctionne que sur une applet ou une application graphique et non pas une appli en mode Console, non ?
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

ben une apli en mode console tu peu pas faire grd chose ;o)

et en effet le keylistener ne fonctione pas
mais tu peu faire un System.in.read (pas sure de la syntax)

...

pour les sample g pas le temp d en produire la ;-(
regarde deja sur le site tu devrai y trouver ton bonheur ..

;o)
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

ben vi ;o) c kes kon disai ... ;o) héhé