Bonjour à tous,
je débute dans mon apprentissage Java, et je suis actuellement sur un exercice qui consiste à deviner une combinaison de chiffres générée par l'ordinateur. Mon problème est le suivant; lorsque je trouve la combinaison je devrais pouvoir passer à la suite du programme mais je reste bloqué à l'intérieur de ma boucle "n°2" (pour en sortir il faut que je dépasse le nombre d'essais autorisés). J'ai essayé de trouver la solution en cherchant à droite à gauche, mais je cale. Si une âme charitable peut m'aider à comprendre d'ou vient le problème, ce serait super!
import java.util.Scanner;
Code java : 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 public class EssaiCode { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { final int NB_CHIFFRE = 4; final int NB_TOUR = 2; int nbTour = 0; char reponse = ' '; int max = 10; int [] combiOrdi = new int [NB_CHIFFRE]; int [] combiJoueur = new int [NB_CHIFFRE]; do { // DO n°1 // Accueil jeu +/-: System.out.println("Bienvenu dans le jeu du plus ou moins"); System.out.println("Pour jouer, vous allez devoir trouver une combinaison de " + NB_CHIFFRE + " chiffres compris entre 0 et 9 " + "avec " + NB_TOUR + " essais maximum"); System.out.println("Chaque saisie de chiffre devra être validée avec la touche ENTER"); System.out.println("----------------------------------"); // je génère une combinaison aleatoire: for (int i = 0; i < NB_CHIFFRE; i++) { combiOrdi [i] = (int) (Math.random() * max); System.out.print(combiOrdi [i]); } do { // DO n°2 // je rentre les 4 chiffres de ma combinaison: for (int i = 0; i < NB_CHIFFRE; i++) { combiJoueur [i] = sc.nextInt(); } /*TEST System.out.println(combiJoueur[0]); System.out.println(combiJoueur[1]); System.out.println(combiJoueur[2]); System.out.println(combiJoueur[3]); */ // je compare les 2 combinaisons: int i = 0; for (i = 0; i < combiJoueur.length; i++) { if (combiJoueur[i] > combiOrdi[i]) { System.out.print("-"); } else if (combiJoueur[i] < combiOrdi[i]) { System.out.print("+"); } else { System.out.print("="); } } System.out.println(); nbTour++; // J'indique le nombre d'essais réalisé System.out.println("essais n°" + nbTour + " sur " + NB_TOUR+ " essais possibles."); //--> Je reste dans ma boucle tant les combi sont différentes et le max de tour non atteint } while ( combiOrdi.equals(combiJoueur) || nbTour < NB_TOUR ); // WHILE n°2 // TEST System.out.println("sorti de la boucle 2"); do {// DO n°3 if (! combiOrdi.equals(combiJoueur) && nbTour > NB_TOUR) { System.out.println("Perdu"); } else if ( combiOrdi.equals(combiJoueur)) { System.out.println("Gagné"); } System.out.println("Voulez-vous recommencer? (O/N): "); reponse = sc.next().charAt(0);// j'ai pas mis nextLine() sinon j'avais une exception if (reponse != 'O' && reponse != 'N') { System.out.println("Le caractère entrée et invalide"); } } while (reponse != 'O' && reponse != 'N'); // WHILE n°3 if (reponse == 'N') { System.out.println("Au revoir"); } } while (reponse == 'O'); } }
Partager