METHODE supprimeTextesSeTerminantPar QUI PREND EN PARAMETRE UNE ARRAY

themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009 - 13 janv. 2008 à 15:28
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 15 janv. 2008 à 10:02
bonjour je voudrais de l'aide pour ecrire une METHODE supprimeTextesSeTerminantPar QUI PREND EN PARAMETRE UNE ARRAY
         LISTE DE STRING ET SUPPRIME DE LA LISTE TOUS LES TEXTES SE TERMINANT PAR UNE LETTRE SPÉCIFIQUE  en java

the messenger

8 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 janv. 2008 à 12:50
Salut,

tu n'arrives pas à faire quoi exactement ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
14 janv. 2008 à 14:25
en fait je sais comment supprimé la derniere lettre d'une chaine de caractére ...
cordialemant

the messenger
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 janv. 2008 à 14:36
Salut,

montre ce que tu as fais déjà apres on va voir en partant de ce que tu as.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
14 janv. 2008 à 14:41
voila c'est tout le code ou je veut l'utilusé

import java.util.ArrayList;
public class Noms {


/**RECUPÉRE DES NOMS DE PERSONNES.ON NE SAIT PAS À L'AVANCE COMBIEN IL Y 'A EN */


     public static void main(String[] args) {
 
         /*declaartion des variables */
  
      ArrayList<String> noms;//liste de noms
   int i=0;//indice de parcourirs de la liste
   String nom;//variable de saisie
   noms = new ArrayList<String>();//creation de la liste
   char l;//lettre dont on cherche le nbre de fois qu'il est en debut de texte
   int nbLettre;//le nombre de fois qu'apparait la lettre saisie
   char l1;//la lettre qui se trouve en fin de mot
      
   /*saisit des noms des personnes*/
   
   nom = Console.readLine("Entrez le nom d'une personne(tapez stop pour arreter):");
   
   while (!nom.equals("stop")){
     noms.add(nom);//insertion des noms dans la liste
     nom = Console.readLine("Entrez le nom d'une personne(tapez slztop pour arreter):");
            }
   
   /*affichage des noms */
   
   afficheListe(noms);//appel de la procédure afficheListe
  
      /*saisi de la lettre chercher*/
   
   l = (Console.readLine("Saisir la lettre qu'on doit compter le nbre de fois qu'elle est présente  en debut de texte")).charAt(0);
  
      /*combien de fois apparait la lettre saisie*/
   
   nbLettre = compteTextesCommencantPar(noms,l);
  
     /*affichage du nombre de fois qu'apparait la lettre saisie*/
  
   System.out.println(nbLettre+"fois");
  


     }//FIN DU MAIN
 


      /** METHODE AFFICHELISTE QUI PREND EN ARGUMENT UNE LISTE ET AFFICHE CES ELEMENTS*/
     
     public static void afficheListe (ArrayList<String> l) {
          
   for(int i = 0;i < l.size();i ++){
       System.out.println(l.get(i) + "\t");
      }
     }//FIN afficheListe




      /**METHODE compteTextesCommencantPar QUI PREND EN PARAMETRE UNE LISTE ET UN CHAR ET RETOURNE
           LE NOMBRE FOIS QU'UNE LETTRE APPARAIT */
    
     public static int compteTextesCommencantPar (ArrayList<String> l,char c){
      int nbTexte=0;
       for (int i = 0;i < l.size();i++) {
        if (c == l.get(i).charAt(0)){
    nbTexte ++;
    }
    }
  return (nbTexte); 
     }//FIN compteTextesCommencantPar
 
  /**METHODE supprimeTextesSeTerminantPar QUI PREND EN PARAMETRE UNE ARRAY
         LISTE DE STRING ET SUPPRIME DE LA LISTE TOUS LES TEXTES SE TERMINANT PAR UNE LETTRE SPÉCIFIQUE */
  
  public static void supprimeTextesSeTerminantPar (ArrayList<String> l,char c1) {
        char c = 0;
     for (int i = 0;i < l.size();i ++) {
         if (c1 == l.get(i).charAt(l.get(i).length() - 1 )){
         l.clear();
                  c++;     
               }
     }
     }//FIN supprimeTextesSeTerminantPar     
          
}//FIN DE LA CLASS NOMS 
       

the messenger
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 janv. 2008 à 17:58
Salut,

ok, ok, dans la méthode "supprimeTextesSeTerminantPar" tu fais un "l.clear();" ce qui vide complètement ton "ArrayList" et qui ne doit pas vraiment faire ce que tu souhaites... perso je te conseille plutôt de mettre "l.remove(i);" à la place de "l.clear();" ainsi tu ne vas pas vider complètement ta liste mais simplement supprimer l'élément qui se termine par "c1".
Ensuite dans ta boucle tu fais souvent appel à "l.get(i)" ce qui est assez lourd (tu passes 2 fois dans la méthode "get" de ta liste ce qui prend du temps, certe c'est minime mais ce temps multiplié par 1000 ça commence à faire... donc le mieux serait de passer par une variable temporaire soit :

Note : ta variable "c" ne sert à rien....donc je l'ai enlevé
public static void supprimeTextesSeTerminantPar (ArrayList<String> l,char c1) {
    for (int i = 0;i < l.size();i ++) {
        String s = l.get(i);
        if (c1 == s.charAt(s.length() - 1 ))
            l.remove(i);
    }
}//FIN supprimeTextesSeTerminantPar     

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
14 janv. 2008 à 18:29
merci ....mais y'a une erreur et je croit que c'est de mon coté ;une derniére question est ce que je peut faire

 l1=(Console.readLine("derniere lettre du mot à supprimer")).charAt(nom.length() - 1 );//on saisi la derniere lettre des motsqu'on doit supprimer
/*appel de la fontion */
    supprimeTextesSeTerminantPar(noms,l1);

pour appelé la fontion dans le main
   

the messenger
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
14 janv. 2008 à 18:50
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: 3
        at java.lang.String.charAt(Unknown Source)
        at Noms.main(Noms.java:46)....

c'est ce qu'il m'affiche

the messenger
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
15 janv. 2008 à 10:02
Salut,

elle est où ta ligne 46 ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous