Fonction qui compare deux tableaux et stocke le résultat dans un trois - Java - Programmation
Marsh Posté le 06-06-2020 à 16:29:12
Salut
Tu peux utiliser les balises code du forum pour poster du code
Pour ton problème moi je ferais 2 boucles imbriquées
Code :
|
Pour ça il faut que ton tab3 fasse au moins la taille de tab1, et puis il va y avoir du vide au milieu de tab3 donc si tu peux utiliser un ArrayList<String> en lieu et place du tableau, il ne nécessite pas de taille pour être initialisé, et auquel tu fais simplement un .add quand c'est égal.
Je vois que c'est ce qui a été fait dans ton code à la fin (boucles imbriquées), dans la methode dédiée, mais je crois qu'il faut utiliser .equals() pour des String et non == !
Marsh Posté le 04-06-2020 à 18:59:14
Bonjour, je suis vraiment débutant en Java. Je dois faire un exo où une fonction compare deux tableaux String (un généré aléatoirement par l'ordi et l'autre choisi par l'utilisateur. Et chaque fois qu'elle trouve un élément identique, elle le case dans un troisième tableau lui aussi forcement String.
import java.util.Scanner;
public class Mastermind_ho {
static Scanner sc = new Scanner(System.in);
static String [] TAB_REF_COLORS = {"rouge","jaune","vert","bleu","orange","blanc","violet","fuchsia"};
static int NB_COLORS = 4;
static int compteur=0;
static String [] combination;
static String [] tabJoueur;
static String [] tabCorrect= {" "," "," "," "};
public static void main(String[] args) {
String [] combinaisonSecrete = generateRandomCombination();
for(int i=0;i<4;i++) {
System.out.print(combinaisonSecrete[i]+ "|" );
}
String [] combinaisonJoueur;
System.out.println();
do {
combinaisonJoueur = choixNumerote();
for(int i=0;i<4;i++) {
System.out.print(combinaisonJoueur[i]+ "|" );
}
//??
}while (compteur<=12 && (12-compteur)>0);
compareColor (tabJoueur, combination);
for(int k=0;k<4;k++) {
System.out.print(tabCorrect[k]+ "|" );
}
sc.close();
}
// Generate random combination of 4 colors
static String [] generateRandomCombination() {
String [] combination = new String[NB_COLORS];
int currentPosition = 0;
while(currentPosition!=NB_COLORS) {
int indexRandom = (int)(Math.random()*TAB_REF_COLORS.length);
String color = TAB_REF_COLORS[indexRandom];
if(!isIn(color, combination)) {
combination[currentPosition] = color;
currentPosition++;
}
}
return combination;
}
static boolean isIn(String iStringToFind, String [] iTab) {
int size = iTab.length;
for(int i=0;i<size;i++) {
if(iStringToFind.equalsIgnoreCase(iTab[i])) return true;
}
return false;
}
// fonction pour récupérer le tableau de l'utilisateur
static String [] choixNumerote() {
String [] tabJoueur = new String[NB_COLORS];
for(int i=0;i<NB_COLORS;i++) {
System.out.println();
System.out.println("Choisissez une couleur :" );
tabJoueur[i]=sc.nextLine();
}
compteur++;
System.out.println("Il te reste : " + (12-compteur) + " tentative(s)" );
if (compteur==12) {
System.out.println("La partie est finie. Tu as perdu !" );
}
return tabJoueur;
}
// fonction pour faire la comparaison entre les 2 tableaux et stocker les élément en communs
static void compareColor (String [] tabPlayer, String [] tabOrdi) {
int sizeTj = tabPlayer.length;
int sizeTm = tabOrdi.length;
int k=0;
for (int i=0;i<sizeTj;i++) {
for(int j=0; j<sizeTm; j++) {
if (tabOrdi[j]==tabPlayer[i]) {
System.out.print("Vous avez trouver une couleur" );
tabCorrect[k]=tabOrdi[j];
k++;
}
else {
continue;
}
}
}
}
}