Fonction qui compare deux tableaux et stocke le résultat dans un trois

Fonction qui compare deux tableaux et stocke le résultat dans un trois - Java - Programmation

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;
                        }
                    }
            }
 
        }
}

Reply

Marsh Posté le 04-06-2020 à 18:59:14   

Reply

Marsh Posté le 06-06-2020 à 16:29:12    

Salut
 
Tu peux utiliser les balises code du forum pour poster du code
 
https://i.imgur.com/IgYdgRR.png
 
 
Pour ton problème moi je ferais 2 boucles imbriquées
 

Code :
  1. for (int i = 0 ; i < tab1.length ; i++)  {
  2.  
  3.      for (int j = 0 ; j < tab2.length ; j++)  {
  4.  
  5.           if (tab1[i].equals(tab2[j])) {
  6.  
  7.                  tab3[i] = tab1[i];
  8.                  // option ArrayList :  array.add(tab1[i]);
  9.           }
  10.      }
  11. }


 
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 ==  !


Message édité par Lt Ripley le 06-06-2020 à 16:54:02

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed