METHODE supprimeTextesSeTerminantPar QUI PREND EN PARAMETRE UNE ARRAY
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention 5 janvier 2009
-
13 janv. 2008 à 15:28
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 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
A voir également:
METHODE supprimeTextesSeTerminantPar QUI PREND EN PARAMETRE UNE ARRAY
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDerniè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) {
/**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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDerniè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);
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDerniè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)....