Vérifier si un élément est présent dans un tableau
Résolu
Teo35
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
Teo35 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Teo35 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Vérifier si un élément est présent dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Verifier un lien - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
6 réponses
Bonjour,
Si tu fais
Mais je n'ai pas bien compris à quoi était censé correspondre cette condition dans le jeu du Mastermind pour t'aider à la corriger comme il faut.
Si tu fais
combinaisonJoueur[i] = lesCouleurs;c'est normal que
if (combinaisonJoueur[i].contains(lesCouleurs))soit toujours vrai puisque les deux valeurs sont identiques...
Mais je n'ai pas bien compris à quoi était censé correspondre cette condition dans le jeu du Mastermind pour t'aider à la corriger comme il faut.
Bonsoir
Oui en réfléchissant, je me suis rendu compte que c'est la même chose...
A chaque partie il y a une combinaison de 4 couleur aléatoire sur 8,
puis un joueur doit choisir aussi 4 couleurs parmi 8 couleurs et les positionner, donc j'ai créé cette boucle pour poser la question 4 fois "entrez la couleur n 1" puis la 2eme etc..
Les 4 couleurs vont dans le tableau combinaisonJoueur.
je voulais verrouiller le fait que le joueur ne puisse pas me donner une même couleur plusieurs fois parmi les quatre. Une fois qu'une couleur est saisie, je pensais mettre une condition pour qu'il y est une vérification dans ce tableau et que la couleur choisie par le joueur ne soit pas déjà le tableau.
merci
Oui en réfléchissant, je me suis rendu compte que c'est la même chose...
A chaque partie il y a une combinaison de 4 couleur aléatoire sur 8,
puis un joueur doit choisir aussi 4 couleurs parmi 8 couleurs et les positionner, donc j'ai créé cette boucle pour poser la question 4 fois "entrez la couleur n 1" puis la 2eme etc..
Les 4 couleurs vont dans le tableau combinaisonJoueur.
je voulais verrouiller le fait que le joueur ne puisse pas me donner une même couleur plusieurs fois parmi les quatre. Une fois qu'une couleur est saisie, je pensais mettre une condition pour qu'il y est une vérification dans ce tableau et que la couleur choisie par le joueur ne soit pas déjà le tableau.
merci
"je voulais verrouiller le fait que le joueur ne puisse pas me donner une même couleur plusieurs fois parmi les quatre"
En vrai dans le Mastermind tu peux très bien avoir plusieurs fois la même couleur dans la combinaison à deviner.
Mais techniquement tu pourrais faire comme ça :
En vrai dans le Mastermind tu peux très bien avoir plusieurs fois la même couleur dans la combinaison à deviner.
Mais techniquement tu pourrais faire comme ça :
System.out.println("\nEssai n° " + (compteur+1) + "/" + maxEssais + " :"); for (int i = 0; i < combinaisonSecrete.length; i++) { System.out.print("Entrez la couleur N°" + (i + 1) + ": "); combinaisonJoueur[i] = clavier.nextLine(); for (int j = 0; j < i; j++) { if (combinaisonJoueur[i].equalsIgnoreCase(combinaisonJoueur[j])) { System.err.println("Le " + combinaisonJoueur[j] + " a déjà été choisi pour la couleur N°" + (j+1)); i--; // avec le i++ du for ça s'annule pour recommencer avec la même valeur i } } }
Bonjour
je vous remercie pour votre aide et de me consacrer un peu de temps. En fait c'est un TD qui impose cela :
● Une couleur ne peut pas être présente plusieurs fois dans la combinaison du joueur.
Etant débutant j'essaye de faire un code vraiment basique j'ai juste une dizaine de cours en java. Je n'ai pas de vrais enjeux, la formation est juste pour le plaisir à mon age....mais avec une envie de réussir et de comprendre le code.
Maintenant le plus dur reste à faire :) indiquer aux joueur juste le nombre de couleurs devinées bien placées et mal placées. Pour cela je vais essayer de faire deux nouvelles boucles for... et me creuser la tête:)
merci encore
je vous remercie pour votre aide et de me consacrer un peu de temps. En fait c'est un TD qui impose cela :
● Une couleur ne peut pas être présente plusieurs fois dans la combinaison du joueur.
Etant débutant j'essaye de faire un code vraiment basique j'ai juste une dizaine de cours en java. Je n'ai pas de vrais enjeux, la formation est juste pour le plaisir à mon age....mais avec une envie de réussir et de comprendre le code.
Maintenant le plus dur reste à faire :) indiquer aux joueur juste le nombre de couleurs devinées bien placées et mal placées. Pour cela je vais essayer de faire deux nouvelles boucles for... et me creuser la tête:)
merci encore
Bonjour
je fais encore appel à votre aide hier j'ai fais plusieurs tentatives mais je dois mal me prendre
Une fois récupéré la combinaison du joueur avec le code que vous m'avez conseillé et qui marche très bien, j'ai crée une nouvelle boucle for pour récupérer dans une variable(correctPlace) le nombre de couleurs bien placées. Si les 4 couleurs sont exactes la partie est gagnée mon code marche. Si la combinaison n'est pas exacte je dois envoyer un message au joueur "vous avez n couleurs bien placées et n couleurs mal placées(sans donner plus de précisions).
Le problème est que si je n'ai pas la combinaison gagnante mais juste quelques couleur, à chaque tentative la variable qui stocke le nombre de couleurs bien placées s'additionne avec les couleurs bonnes de la tentative précédente. Du coup il renvoi le message en additionnant toutes les couleurs bonnes des autres tentatives. Voici mon code :
J'ai mis tout mon code du programme dans une boucle while :
A la suite de la boucle for je vais en créer une autre pour le nombre de couleurs exactes mais mal placées. Y a t il une méthode pour comparer deux tableau et renvoyer juste le nombre de couleurs en communs même si ils ne sont pas au même indice?
Merci pour votre aide mais je coince un peu sur ces deux boucles.
bonne journée
je fais encore appel à votre aide hier j'ai fais plusieurs tentatives mais je dois mal me prendre
Une fois récupéré la combinaison du joueur avec le code que vous m'avez conseillé et qui marche très bien, j'ai crée une nouvelle boucle for pour récupérer dans une variable(correctPlace) le nombre de couleurs bien placées. Si les 4 couleurs sont exactes la partie est gagnée mon code marche. Si la combinaison n'est pas exacte je dois envoyer un message au joueur "vous avez n couleurs bien placées et n couleurs mal placées(sans donner plus de précisions).
Le problème est que si je n'ai pas la combinaison gagnante mais juste quelques couleur, à chaque tentative la variable qui stocke le nombre de couleurs bien placées s'additionne avec les couleurs bonnes de la tentative précédente. Du coup il renvoi le message en additionnant toutes les couleurs bonnes des autres tentatives. Voici mon code :
for (int i = 0; i < combinaisonSecrete.length; i++) {
if (combinaisonJoueur[i].equals(combinaisonSecrete[i])) {
correctPlace++;
}
}
System.out.println("\ncouleurs bien placées : " + correctPlace);
System.out.println();
if (correctPlace == 4) {
System.out.println("Vous avez gagné en " + compteur + " essais");
break;
} else if (compteur == 12) {
System.out.println("Vous avez perdu");
break;
}
J'ai mis tout mon code du programme dans une boucle while :
while (correctPlace != 4 || compteur < maxEssais) {
A la suite de la boucle for je vais en créer une autre pour le nombre de couleurs exactes mais mal placées. Y a t il une méthode pour comparer deux tableau et renvoyer juste le nombre de couleurs en communs même si ils ne sont pas au même indice?
Merci pour votre aide mais je coince un peu sur ces deux boucles.
bonne journée
Bonjour,
"à chaque tentative la variable qui stocke le nombre de couleurs bien placées s'additionne avec les couleurs bonnes de la tentative précédente"
Il faudrait remettre la valeur à zéro à chaque fois que tu commences la somme.
Quant aux couleurs mal placées tu peux imbriquer une autre boucle for pour ne pas regarder uniquement la combinaisonSecrete du même indice, mais toutes les valeurs (grâce à la propriété que toutes les couleurs sont différentes).
"à chaque tentative la variable qui stocke le nombre de couleurs bien placées s'additionne avec les couleurs bonnes de la tentative précédente"
Il faudrait remettre la valeur à zéro à chaque fois que tu commences la somme.
Quant aux couleurs mal placées tu peux imbriquer une autre boucle for pour ne pas regarder uniquement la combinaisonSecrete du même indice, mais toutes les valeurs (grâce à la propriété que toutes les couleurs sont différentes).
correctPlace = 0; incorrectPlace = 0; for (int i = 0; i < combinaisonJoueur.length; i++) { for (int j = 0; j < combinaisonSecrete.length; j++) { if (combinaisonJoueur[i].equalsIgnoreCase(combinaisonSecrete[j])) { if (i == j) { correctPlace++; System.out.println("Le " + combinaisonJoueur[i] + " est bien placé"); } else { incorrectPlace++; System.out.println("Le " + combinaisonJoueur[i] + " existe, mais il est mal placé"); } } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
j'avais essayé de mettre la variable à 0 mais je pense la mettre au mauvaise endroit
parce que quand je mettais la variable à 0 et j'avais les 4 couleurs bonnes, le programme ne s'arrêtais pas.
Pour un débutant l'imbrication des boucles n'est pas facile à comprendre je pense il faut pratiquer souvent....
Je suis impressionné par votre facilité.... J'ai testé votre code mais je pense j'ai du mal m'expliquer. Au joueur je dois juste lui envoyé un message à chaque tentative sans lui spécifier les couleurs.
Exemple : Nombre de couleurs correctes 1 , nombre de couleurs bien placées 2. Sans lui spécifier lesquelles.
J'ai un peu reflechi à votre code et j'ai mis en place des conditions et ca marche peut être ce n'est pas trop pro mais mon programme à l'air de marcher :
merci pour le temps que vous me consacrez.
j'avais essayé de mettre la variable à 0 mais je pense la mettre au mauvaise endroit
parce que quand je mettais la variable à 0 et j'avais les 4 couleurs bonnes, le programme ne s'arrêtais pas.
Pour un débutant l'imbrication des boucles n'est pas facile à comprendre je pense il faut pratiquer souvent....
Je suis impressionné par votre facilité.... J'ai testé votre code mais je pense j'ai du mal m'expliquer. Au joueur je dois juste lui envoyé un message à chaque tentative sans lui spécifier les couleurs.
Exemple : Nombre de couleurs correctes 1 , nombre de couleurs bien placées 2. Sans lui spécifier lesquelles.
J'ai un peu reflechi à votre code et j'ai mis en place des conditions et ca marche peut être ce n'est pas trop pro mais mon programme à l'air de marcher :
correctPlace = 0;
correctCouleur = 0;
for (int i = 0; i < combinaisonJoueur.length; i++) {
for (int j = 0; j < combinaisonSecrete.length; j++) {
if (combinaisonJoueur[i].equalsIgnoreCase(combinaisonSecrete[j])) {
if (i == j) {
correctPlace++;
} else {
correctCouleur++;
}
}
}
}
if (correctPlace < 4){
System.out.println("Couleurs bien placées " + correctPlace + ", Couleurs correctes, " + correctCouleur );
System.out.println();
} else if(correctPlace == 4) {
System.out.println("Bravo! Vous avez gagné! ");
break;
} else if (compteur == 12) {
System.out.println("Vous avez perdu, la combinaison était: ");
break;
}
merci pour le temps que vous me consacrez.