Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2970 connectés 

  FORUM HardWare.fr
  Programmation
  Java

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2355245
amwin
Posté le 04-06-2020 à 18:59:14  profilanswer
 

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

mood
Publicité
Posté le 04-06-2020 à 18:59:14  profilanswer
 

n°2355401
Lt Ripley
T'es à fond là ?
Posté le 06-06-2020 à 16:29:12  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

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

 

Sujets relatifs
Fonction mail() sur synologyRécupérer résultat d'une réquête dans un tableau en shell (ksh)
Membre non static en pointeur sur fonction pour callbackMapping d'un tableau en fonction de valeurs déjà filtrées
Fonction javascript[html] fonction scroll
Forcer le clavier numérique en fonction d'un input typeFonction mail() de PHP avec plusieurs serveurs SMTP
Excel VBA : fonction indiquant #value au démarrage 
Plus de sujets relatifs à : Fonction qui compare deux tableaux et stocke le résultat dans un trois


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR