IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

regionMatches


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut regionMatches
    Hello à tous
    bon, voilà mon pb,

    je dois chercher un string dans un string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void rechercheParMot(String mot){
        for(int i=0;i<NB;i++){
           if (StockProduit[i].returnDescription().regionMatches(true,0,mot,0,mot.length())){
             System.out.println(mot);
           }
        }
      }
    la string est : "Ce produit provient de notre magasin"
    et pour le test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mag.rechercheParMot("produit");
    resultat rien.
    Quelqu'un peut m'aider svp?

  2. #2
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    je connais pas regionMatches(...), mais sinon tu peux essayer avec matches(...)

  3. #3
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    que fait le méthode returnDescription() ? peut-étre serait-il plus judicieux de la remplacer par toString() .
    Quel type d'objet contient ton tableau ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    Le code est trop long et y a 3 classes.
    donc je vais prendre l'essentiel.

    Code : 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
     
    //mon constructeur
    public Produit(String No,double PAC,double PVE, double Nbr,String D) {
        nom = No;
        PrixAchat = PAC;
        PrixVente = PVE;
        NbreExplStock = Nbr;
        description = D;
      }
    //méthode qui me retourne la description
    public String returnDescription(){
    return description;
    }
     
    //Méthode qui ajoute un produit dans mon tableau
       public void ajouterProduit(String nom,double PrixAchat, double PrixVente, double Nbr, String Desc) {
    if (NB !=StockProduit.length){
     StockProduit[NB] = new Produit(nom,PrixAchat,PrixVente,Nbr,Desc);
    NB ++;
    }else{
    System.out.println("Erreur, taille du tableau trop petite");
       }
    }
     
     
    //Methode qui recherche par mot
      public void rechercheParMot(String mot){
        for(int i=0;i<NB;i++){
           if (StockProduit[i].returnDescription().regionMatches(true,0,mot,0,mot.length())){
             System.out.println(mot);
           }
        }
      }
     
    //et le test
     
        Mag mag = new Mag();
        mag.ajouterProduit("Gomme",3,5.2,3,"Ce produit provient de notre magasin");
        mag.rechercheParMot("produit");
    Merci de votre aide

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Je ne vois rien qui cloche dans ton code. As-tu vérifié que Produit[] n'est pas vide ? essaye de débugger avec un System.out.println(Produit[nb].returnDescription()); avant d'appliquer regionMatches.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    StockProduit[i].returnDescription() ;
    me retourne bien la descripion trouvé

  7. #7
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    bonsoir,

    C'est normal, tu vérifies si "produit" est le début de "Le produit...".

    Change "produit" en "Le", et je pense que tu aura vrai en retour de ta méthode.

    A ta place, j'utiliserai plutot String.matches(regExp).

    Ou tu peux faire un stringTokenizer pour vérifier pour chaque token (chaque mot) l'égalité avec "produit". C'est à toi de voir


    Billy

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    voici les codes en entier.
    la class produit
    Code : 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
     
    public class Produit {
      //attribut d'un produit
      private String nom;
      private double PrixAchat;
      private double PrixVente;
      private double NbreExplStock;
      private String description;
      //-----------------------------------
      //Initialisation des attributs par le constructeur
      public Produit(String N,double PA,double PV) {
        nom = N;
        PrixAchat = PA;
        PrixVente = PV;
        NbreExplStock = 0;
        description = "Pas de description";
      }
      //---------------------------------------
      //Méthode pour afficher le descriptif du produit
      public void Affich(){
        System.out.println("Nom du produit : " + nom + "\n" +
                           "Prix d'achats : " + PrixAchat + "\n" +
                           "Prix de ventes : " +PrixVente + "\n" +
                           "Quantité d'exemplaire en stock : " + NbreExplStock + "\n" +
                           "Descriptif du produit : " + description);
      }
      //----------------------------------------
      //Méthode pour éditer le Produit
      //c'est aussi une surcharge du constructeur
      public Produit(String No,double PAC,double PVE, double Nbr,String D) {
        nom = No;
        PrixAchat = PAC;
        PrixVente = PVE;
        NbreExplStock = Nbr;
        description = D;
      }
      //-----------------------------------------
      //Méthode pour augmenter ou diminuer le nommbre d'exemplaire en stock
      public void AugmenterNbExpl(double Nb){
        NbreExplStock += Nb;
      }
      //------------------------------------------
      public void DiminuerNbExpl(double Nb){
        NbreExplStock -= Nb;
      }
      //------------------------------------------
      //Méthodes pour obtenir les valeurs des différentes attributs
      public String returnNom(){
      return nom;
    }
    public String returnDescription(){
    return description;
    }
      public double returnPrixAchat(){
        return PrixAchat;
      }
      public double returnPrixVente(){
       return PrixVente;
     }
     //----------------------------------------------
     public double NbreExplaire(){
       return NbreExplStock;
     }
     //----------------------------------------
    }
    la class Mag
    Code : 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
     
    public class Mag {
      //attributs
      private double Solde;
      private Produit StockProduit[];
      private int NB;
        //------------------------------------
        //constructeur Mag
        public Mag(){
          StockProduit = new Produit[50];
          NB = 0;
        }
        //Méthode pour ajouter un produit dans le Stock
        public void ajouterProduit(String nom,double PrixAchat, double PrixVente) {
        if (NB !=StockProduit.length){
         StockProduit[NB] = new Produit(nom,PrixAchat,PrixVente);
        NB ++;
        }else{
        System.out.println("Erreur, taille du tableau trop petite");
        }
       }
      public void ajouterProduit(String nom,double PrixAchat, double PrixVente, double Nbr, String Desc) {
         if (NB !=StockProduit.length){
           StockProduit[NB] = new Produit(nom,PrixAchat,PrixVente,Nbr,Desc);
           NB ++;
         }else{
           System.out.println("Erreur, taille du tableau trop petite");
         }
       }
       public void ajouterLivre(String Nom_,double PA_,double PV_,String Aut_, String Ed_){
          StockProduit[NB]= new Livre(Nom_,PA_,PV_, Aut_,Ed_);
          NB ++;
       }
       public void ajouterCD(String Nom_,double PA_,double PV_,String Aut, String Interpr,int numP){
         StockProduit[NB] = new CD(Nom_,PA_,PV_, Aut,Interpr, numP);
         NB++;
       }
     
    //------------------------------------------------
     //Méthode d'achat et de vente de produit. achat augmente, vente diminue.
      public void acheterProduit(int referenceProduit, double NbreExplStock){
        StockProduit[referenceProduit].AugmenterNbExpl(NbreExplStock);
      }
      public void VendreProduit(int referenceProduit, double NbreExplStock){
        if(StockProduit[referenceProduit].NbreExplaire()>= NbreExplStock) //test de disponibilité
        StockProduit[referenceProduit].DiminuerNbExpl(NbreExplStock);
        else System.out.println("Désolé, opération impossible");
    }
      //----------------------------------------------------------------
      /*public void Bilan(){
        double solde =0.0;
        for(int i=0;i<StockProduit.length;i++){
         solde += StockProduit[i].NbreExplaire() * StockProduit[i].returnPrixAchat();
        }
         System.out.println(solde);
      }*/
      //-----------------------------------------------------------
      //Méthode pour afficher les éléments de mon Stock
      public void AffichStockElement(){
        for(int i=0;i<NB;i++){
          StockProduit[i].Affich();
         }
      }
      //-----------------------------------------------------
      public void rechercheProduit(String nom){
        for(int i=0;i<NB;i++){
        if (nom.equals(StockProduit[i].returnNom())){
          System.out.println(nom);
          //System.out.println(StockProduit[i].returnDescription());
        }
       }
      }
      public void rechercheParMot(String mot){
        for(int i=0;i<NB;i++){
     
         if (StockProduit[i].returnDescription().regionMatches(true,0,mot,0,mot.length())){
          //if (StockProduit[i].returnDescription().matches(mot)){
             System.out.println(mot);
           }
        }
      }
    }
    la class Test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class TestMag {
      public static void main(String[] args) {
        Mag mag = new Mag();
        mag.ajouterProduit("Crayon",6,8.3);
        mag.ajouterProduit("Stylo",7.0,8.94,2,"la marque de ce stylo est exceptionnele" );
        mag.ajouterProduit("Gomme",3,5.2,4,"Ce produit provient de notre magasin");
    mag.rechercheProduit("Gomme");
        mag.rechercheParMot("provient de ");
      }
    }
    resultat
    juste la méthode rechercheProduit marche
    La méthode rechercheParMot m'affiche rien
    dsl c'est long et merci de votre aide.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo