J'ai crée deux classes en Java ; la première classe intitulé Unthread étend de la classe Thread et la deuxième un main tout simplement .
Je veux que l'utilisateur fait entrer à chaque tentative (il ya 5 tentatives) un mot pour une contrainte de temps de 8 sec et si le mot est correct la boucle while est interrompue sinon i=i+1 ; ( je fais le test du mot entré avec au autre mot ="akaichi")
mon problème est : en faisant l'exécution à chaque tentative si j'entre rien et le temps est écoulé le programme ne passe pas a la ième tentative et il faut que je tape quelque chose au clavier pour qu'il passe à la tentative suivante .
Je veux simplement que si aucun mot est entré et si le temps est écoulé il passe tout seul à la tentative suivante .
Voilà la classe Unthread ;
Voilà la classe main :
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 public class Unthread extends Thread{ public void run() { long time=0L; while (! isInterrupted()) { time = System.currentTimeMillis(); try { // cinq secondes d'attente Thread.sleep(8000); } catch (InterruptedException e) { //System.out.println("saisir votre mot"); // Activation du flag d'interruption Thread.currentThread().interrupt(); break; } System.out.println("temps ecoulé"); break; }}}
Merci pour votre aide
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 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception{ Lire l =new Lire (); String tentative; int i=1; Boolean stop =false; while (i<=5 && stop==false){ System.out.println("la valeur de i est "+" " +i); Unthread th=new Unthread(); th.start(); System.out.println("Saisir votre mot !"); // Attente d'une interruption manuelle //System.in.read(); tentative=l.chaine();//saisie if (l.TestChaine(tentative)) {stop=true; break;} th.interrupt(); // // Attente de la fin du thread th.join(); if (i<5 ) System.out.println("Le mot est incorrect ! passons a la "+" "+(i+1)+" "+" ème tentative"); i=i+1; }![]()
Partager