Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * A COMPLETER...
- *
- */
- public class Multiliste {
- //---------------------------
- // CONSTANTES
- //---------------------------
- //Message de presentation du programme
- public final static String MSG_PRESENTATION = "GESTION D'UNE MULTILISTE";
- //Menu et message de sollicitation du menu
- public final static String MENU =
- "\n----\n"
- + "MENU\n----\n"
- + "1. Creer une nouvelle liste\n"
- + "2. Supprimer une liste\n"
- + "3. Ajouter des items a une liste\n"
- + "4. Retirer des items d'une liste\n"
- + "5. Afficher une liste\n"
- + "6. Quitter\n\n"
- + "Entrez votre choix :\n ";
- //Message d'erreur pour la validation du choix au menu
- public final static String MSG_ERR_CHOIX_MENU =
- "\nChoix invalide ! Recommencez...";
- //Message affiche a la fin du programme
- public final static String MSG_FIN_PROG = "\n\nAUREVOIR !\n";
- //Message d'erreur multiliste
- public final static String MSG_ERR =
- "\nAucune Liste...";
- public final static String MSG_ENTRER =
- "Taper sur <ENTREE> pour revenir au menu...";
- public final static String MSG_ERR_ITEMS =
- "ERREUR ! Le nom doit contenir entre 2 et 30 caracteres. Recommencez...";
- public final static String MSG_SOL_LISTE =
- "Entrez le nom de la liste(<ENTREE> pour annuler)";
- public final static String MSG_ERR_LISTE =
- ("AUCUNE LISTE A SUPPRIMER");
- public final static String NO_MULTILISTE =
- ("CETTE MULTILISTE NE CONTIENT AUCUNE LISTE");
- public final static String OPE_ANUL =
- "* OPERATION ANNULEE *";
- public final static int MIN_LISTE = 2;
- public final static int MAX_LISTE = 29;
- public final static int MIN_ITEMS = 2;
- public final static int MAX_ITEMS = 49;
- //---------------------------
- // METHODES
- //---------------------------
- /**
- * Permet de vérifier si la liste d'items est de longueur conforme.
- * @param nomItem, item a verifier.
- * @return true si la condition est remplie.
- */
- public static boolean longeurChaineItem(String nomItem) {
- return nomItem.length() + 1 > MIN_ITEMS && nomItem.length() + 1 < MAX_ITEMS;
- }
- /**
- * Permet de vérifier si la liste est de longueur conforme.
- * @param liste, liste dont la longueur est a verifier.
- * @return la liste si elle est conforme.
- */
- public static String listeLength (String liste) {
- if (liste.length() == 0) {
- System.out.println(OPE_ANUL + "\n");
- }
- if (liste.length() != 0) {
- while (liste.length() != 0 &&(liste.length() < MIN_LISTE || liste.length() > MAX_LISTE)) {
- System.out.println(MSG_ERR_ITEMS);
- System.out.println(MSG_SOL_LISTE);
- liste = Clavier.lireString();
- if (liste.length() == 0) {
- System.out.println(OPE_ANUL + "\n");
- }
- }
- }return liste;
- }
- /**
- * Permet de convertir la multiliste avec items entre parenthese.
- * @param multiliste multiliste a convertir.
- * @return la multiliste aves items entre parenthese.
- */
- public static String multilisteOpt5 (String multiliste) {
- String multilisteIemeListe;
- String multilisteRetour = "";
- String multilsiteSub;
- int i = 1;
- int nbrlistes = nbrListes(multiliste);
- while (i < nbrlistes) {
- multilisteIemeListe = extraireIemeListe(multiliste, i);
- multilsiteSub = listeNoItems(multilisteIemeListe);
- if(!multilisteIemeListe.isEmpty()) {
- multilisteRetour += multilsiteSub + "(" + nbrItemsDansListe(multilisteIemeListe) + ") " + "\n";
- }
- ++i;
- }return multilisteRetour;
- }
- /**
- * Permet de convertir la liste sans items.
- * @param multiliste multiliste a convertir.
- * @return la multiliste sans items.
- */
- public static String listeNoItems (String multiliste) {
- String multilisteNoItems = "";
- if (multiliste.contains(":")) {
- multilisteNoItems = multiliste.substring(0, multiliste.indexOf(":"));
- }
- if (!multiliste.contains(":")) {
- multilisteNoItems = multiliste.substring(0,multiliste.length());
- } return multilisteNoItems;
- }
- /**
- * Permet de cree la multiliste.
- * @param nomListe les listes a rajouter a la multiliste.
- * @param nomItem les items a rajouter a la liste
- * @return la multiliste.
- */
- public static String creeMultiliste (String nomListe, String nomItem) {
- String multiliste = "";
- multiliste = nomListe + "\n";
- if (!nomItem.isEmpty()) {
- multiliste = nomListe + "::" + nomItem + "\n" ;
- }
- return multiliste;
- }
- /**
- * Permet d'obtenir l'indice de debut de l'item de la liste desirer.
- * @param liste la liste a dans la quel on recherche l'indice de debut de l'item.
- * @param ieme le numero de l'item que l'on désire avoir l'indice de debut.
- * @return l'indice de debut du ieme item.
- */
- public static int indiceDebutIemeItem (String liste,int ieme){
- int indiceDebutIemeItem;
- if (ieme > Multiliste.nbrItemsDansListe(liste)) {
- indiceDebutIemeItem = -1;
- return indiceDebutIemeItem;
- } else {
- for (int i = 0; i < ieme; i++) {
- liste = liste.substring(liste.indexOf("|"), liste.lastIndexOf("|"));
- }
- indiceDebutIemeItem = liste.charAt(0);
- }
- return indiceDebutIemeItem;
- }
- /**
- * Permet de compter le nombre d'items dans la liste.
- * @param liste la liste a dans la quel on recherche le nombre d'items.
- * @return le nombre d'items.
- */
- public static int nbrItemsDansListe (String liste) {
- int nbrItemsDansListes = 0;
- while (liste.contains("|")) {
- liste = liste.substring(liste.indexOf("|"), liste.lastIndexOf("|"));
- nbrItemsDansListes = ++nbrItemsDansListes;
- }
- return nbrItemsDansListes;
- }
- public static String iemeListe (String multiliste,int nbrListes) {
- String liste;
- String listeItems = "";
- String testList = "";
- if (nbrListes != 0) {
- liste = extraireIemeListe(multiliste, nbrListes);
- if (liste.contains("::")) {
- String listeMaj = liste.substring(0, liste.indexOf("::"));
- listeMaj = listeMaj.toUpperCase();
- for (int i = 0; i < nbrListes; i++) {
- String liste0 = liste.substring(liste.lastIndexOf(":") + 1, liste.length());
- String liste1 = liste.substring(liste.lastIndexOf(":") + 1, liste.length());
- //substring qui permet de supprimer les items 1 par un et les mettre dans une autre liste avec leur numero
- i = 1;
- while (i <= nbrItemsDansListe(liste.substring(liste.lastIndexOf(":") + 1, liste.length()))) {
- liste0 = liste1.substring(0, liste1.indexOf("|"));
- listeItems += ("\n(") + i + (")") + liste0;
- liste1 = liste1.substring(liste1.indexOf("|") + 1, liste1.length());
- ++i;
- }
- }
- testList = listeMaj + ":" + listeItems;
- System.out.println(testList);
- }
- if (!liste.contains("::")) {
- String listeMaj = liste.toUpperCase();
- System.out.println(listeMaj + "\n" + "Cette liste ne contient aucun item" + "\n");
- }
- }return testList;
- }
- /**
- * Permet d'extraire une liste de la multiliste
- * @param multiliste la multiliste dans la quel on veux extraire une liste.
- * @param ieme le numero de la liste que l'on désire extraire.
- * @return la ieme liste extraite.
- */
- public static String extraireIemeListe (String multiliste,int ieme) {
- String iemeListe = multiliste;
- int i=1;
- while (i < ieme) {
- iemeListe = iemeListe.substring(iemeListe.indexOf("\n")+1,iemeListe.length());
- ++i;
- }
- i = nbrListes(multiliste);
- while (i > ieme) {
- iemeListe = iemeListe.substring(0,iemeListe.lastIndexOf("\n",iemeListe.length()-1));
- --i;
- }
- return iemeListe;
- }
- /**
- * Permet de retirer une liste de la multiliste.
- * @param multiliste la multiliste dans la quel on veux retirer une liste.
- * @param ieme le numero de la liste que l'on désire retirer.
- * @return la multiliste moins la ieme liste retirer.
- */
- public static String supprimerIemeListe (String multiliste,int ieme) {
- String multiliste1 = multiliste;
- String multiliste2 = multiliste;
- String multiliste11 = "";
- int i=1;
- int b=1;
- int iemeTest1 = ieme-1;
- int iemeTest2 = ieme;
- String compteur = String.valueOf(iemeTest2);
- String compteur2 = String.valueOf(iemeTest1);
- while (ieme != 0 && ( ieme < 0 || ieme >= nbrListes(multiliste))) {
- System.out.println(MSG_ERR_CHOIX_MENU);
- System.out.println("Entrez le numero de la liste a supprimer");
- ieme = Clavier.lireInt();
- }
- if (nbrListes(multiliste) == 2) {
- multiliste = "";
- } else {
- while (i <= ieme) {
- multiliste1 = multiliste1.substring(multiliste1.indexOf("\n") + 1, multiliste1.length());
- ++i;
- }
- while (b <= nbrListes(multiliste1)) {
- multiliste1 = multiliste1.replace((compteur + "."), (compteur2) + ".");
- ++b;
- ++iemeTest1;
- ++iemeTest2;
- compteur = String.valueOf(iemeTest2);
- compteur2 = String.valueOf(iemeTest1);
- }
- i = nbrListes(multiliste);
- if (nbrListes(multiliste) == 3) {
- multiliste2 = "";
- }
- if (nbrListes(multiliste) != 3) {
- while (i >= ieme) {
- multiliste2 = multiliste2.substring(0, multiliste2.lastIndexOf("\n", multiliste2.length() - 1));
- --i;
- }
- }
- System.out.println(multiliste1 + "\n");
- multiliste = multiliste2 + "\n" + multiliste1;
- }return multiliste;
- }
- /**
- * Permet d'extraire l'indice de debut de la ieme liste.
- * @param multiliste la multiliste de la quel on veux obtenir la liste.
- * @param ieme le numero de la liste que l'on veux obtenir l'indice de debut.
- * @return l'indice de la ieme liste.
- */
- public static int indiceDebutIemeliste (String multiliste,int ieme) {
- String debutListe = extraireIemeListe(multiliste,ieme);
- return debutListe.indexOf(0); //A ENLEVER, pour compilation seulement.
- }
- /**
- * Permet de compter le nombre de listes dans la multiliste.
- * @param multiliste la multiliste dans la quel on veux compter le nombre de liste.
- * @return le nombre de listes dans la multiliste.
- */
- public static int nbrListes (String multiliste) {
- int nbrListes = 1;
- String multilisteTest = multiliste;
- while (multilisteTest.contains("\n")) {
- multilisteTest = multilisteTest.substring(multilisteTest.indexOf("\n"), multilisteTest.lastIndexOf("\n"));
- ++nbrListes;
- }
- return nbrListes;
- }
- /**
- * Permet de supprimer un item de la liste.
- * @param liste la liste dans la quel on veux supprimer un item
- * @param ieme le numero de l'item que l'on désire supprimer
- * @return la liste moins l'ieme item supprimer.
- */
- public static String supprimerIemeItem (String liste,int ieme) {
- String Liste = liste.substring(0,liste.indexOf("::")+2);
- String items = liste.substring(liste.indexOf("::")+2,liste.length());
- String liste1 = items;
- String liste2 = items;
- int i = 1;
- int b = nbrItemsDansListe(liste)+1;
- while (i <= ieme) {
- liste1 = liste1.substring(liste1.indexOf("|") + 1, liste1.length());
- ++i;
- }
- while (b >= ieme && ieme != 1) {
- liste2 = liste2.substring(0, liste2.lastIndexOf("|", liste2.length() - 1));
- --b;
- } if (ieme == 1) {
- liste = Liste + liste1;
- } if (ieme !=1) {
- System.out.println("\n" + liste1);
- System.out.println("\n" + liste2);
- liste = Liste + liste2 + "|" + liste1;
- }return liste; //A ENLEVER, pour compilation seulement.
- }
- /**
- * A COMPLETER...
- * @param liste
- * @return
- */
- public static String supprimerDesItemsDansListe (String liste){
- //Methode a completer (enlever ce commentaire)
- return null; //A ENLEVER, pour compilation seulement.
- }
- /**
- * A COMPLETER...
- * @param multiliste
- * @return
- */
- public static String creerNouvelleListe (String multiliste) {
- String nomItemListe = "";
- int nbrItems = 0;
- System.out.println("Entrer le nom d'une nouvelle liste");
- String nomListe = Clavier.lireString();
- nomListe = listeLength(nomListe);
- if (nomListe.length() >= MIN_LISTE && nomListe.length() <= MAX_LISTE) {
- System.out.println("Ajouter des items a la nouvel liste (ENTER POUR QUITTER)");
- String nomItem = Clavier.lireString();
- while (nomItem.length() != 0) {
- while (longeurChaineItem(nomItem) && nomItem.length() != 0) {
- nomItemListe = nomItemListe + nomItem + "|";
- System.out.println("Ajouter des items a la nouvel liste (ENTER POUR QUITTER)");
- nomItem = Clavier.lireString();
- ++nbrItems;
- }
- while (nomItem.length() != 0 && !longeurChaineItem(nomItem)) {
- System.out.println("ERREUR ! L'item doit contenir entre 2 et 50 caracteres. Recommencez...");
- System.out.println("Ajouter des items a la nouvel liste");
- nomItem = Clavier.lireString();
- }
- }
- System.out.println(nbrItems + " item(s) ajoute(s)" + "\n");
- multiliste += nbrListes(multiliste) + (".") + (" ") + creeMultiliste(nomListe, nomItemListe);
- }
- System.out.println(MSG_ENTRER);
- Clavier.lireFinLigne();
- return multiliste;
- }
- /**
- * A COMPLETER...
- * @param multiliste
- * @return
- */
- public static String supprimerListe (String multiliste){
- String creeListeOpt5 = multilisteOpt5(multiliste);
- System.out.println(creeListeOpt5);
- if (multiliste.isEmpty()) {
- System.out.println(NO_MULTILISTE);
- }else {
- System.out.println("Entrez le numero de la liste a supprimer");
- int iemeListe = Clavier.lireInt();
- multiliste = supprimerIemeListe(multiliste, iemeListe);
- }
- System.out.println("\n" + MSG_ENTRER);
- Clavier.lireFinLigne();
- return multiliste;
- }
- /**
- * A COMPLETER...
- * @param multiliste
- * @param
- */
- public static String ajouterItems (String multiliste) {
- String multilisteNumero;
- String liste;
- String listeItems = "";
- int nbrItems = 0;
- if (multiliste.isEmpty()) {
- System.out.println(NO_MULTILISTE);
- } else {
- String creeListeOpt5 = multilisteOpt5(multiliste);
- System.out.println(creeListeOpt5);
- System.out.println("Entrez le numero de la liste dont vous voulez faire l'ajout d'items");
- int nbrListes = Clavier.lireInt();
- while (nbrListes != 0 && (nbrListes < nbrListes(multiliste) && nbrListes > nbrListes(multiliste))) {
- System.out.println("Le numéro doit etre dans la multiliste");
- System.out.println("Entrez le numero de la liste dont vous voulez faire l'ajout d'items");
- nbrListes = Clavier.lireInt();
- }
- iemeListe(multiliste, nbrListes);
- System.out.println("Ajouter des items a la liste (ENTER POUR QUITTER)");
- String nomItem = Clavier.lireString();
- String nomItemListe = extraireIemeListe(multiliste,nbrListes);
- String listeRemplacer = extraireIemeListe(multiliste,nbrListes);
- while (nomItem.length() != 0) {
- while (longeurChaineItem(nomItem) && nomItem.length() != 0) {
- nomItemListe = nomItemListe + nomItem + "|";
- System.out.println("Ajouter des items a la liste (ENTER POUR QUITTER)");
- nomItem = Clavier.lireString();
- ++nbrItems;
- }
- while (nomItem.length() != 0 && !longeurChaineItem(nomItem)) {
- System.out.println("ERREUR ! L'item doit contenir entre 2 et 50 caracteres. Recommencez...");
- System.out.println("Ajouter des items a la liste (ENTER POUR QUITTER)");
- nomItem = Clavier.lireString();
- }if (nomItem.isEmpty()) {
- System.out.println(nbrItems + " item(s) ajoute(s)" + "\n");
- multiliste = multiliste.replace(listeRemplacer, nomItemListe);
- }
- }
- }
- System.out.println("\n" + MSG_ENTRER);
- Clavier.lireFinLigne();
- return multiliste;
- }
- /**
- * A COMPLETER...
- * @param multiliste
- * @return
- */
- public static String retirerItems (String multiliste) {
- String multilisteNumero;
- String liste;
- String listeItems = "";
- int nbrItems = 0;
- int i = 0;
- if (multiliste.isEmpty()) {
- System.out.println(NO_MULTILISTE);
- } else {
- String creeListeOpt5 = multilisteOpt5(multiliste);
- System.out.println(creeListeOpt5);
- System.out.println("Entrez le numero de la liste dont vous voulez retirer des items");
- int nbrListes = Clavier.lireInt();
- while (nbrListes != 0 && (nbrListes < nbrListes(multiliste) && nbrListes > nbrListes(multiliste))) {
- System.out.println("Le numéro doit etre dans la multiliste");
- System.out.println("Entrez le numero de la liste dont vous voulez retirer des items");
- nbrListes = Clavier.lireInt();
- }
- iemeListe(multiliste, nbrListes);
- if (nbrListes == 0) {
- System.out.println("\n" + MSG_ENTRER);
- }
- else {
- System.out.println("retirer des items a la liste (ENTER POUR QUITTER)");
- int numItem = Clavier.lireInt();
- String nomItemListe = extraireIemeListe(multiliste, nbrListes);
- String listeRemplacer = extraireIemeListe(multiliste, nbrListes);
- while (numItem != 0 && numItem > nbrItemsDansListe(nomItemListe)) {
- System.out.println("ERREUR ! L'item doit etre dans la liste");
- System.out.println("retirer des items a la liste (ENTER POUR QUITTER)");
- numItem = Clavier.lireInt();
- }
- if (numItem != 0 && numItem <= nbrItemsDansListe(nomItemListe)) {
- nomItemListe = supprimerIemeItem(nomItemListe, numItem);
- System.out.println("\n" + nomItemListe);
- }
- if (numItem == 0) {
- multiliste = multiliste.replace(listeRemplacer, nomItemListe);
- System.out.println("\n" + MSG_ENTRER);
- Clavier.lireFinLigne();
- }
- multiliste = multiliste.replace(listeRemplacer, nomItemListe);
- }Clavier.lireFinLigne();
- }
- System.out.println("\n" + MSG_ENTRER);
- Clavier.lireFinLigne();
- return multiliste;
- }
- /**
- * A COMPLETER...
- * @param multiliste
- * @param
- */
- public static void afficherListe (String multiliste) {
- String liste;
- String listeItems = "";
- if (multiliste.isEmpty()) {
- System.out.println("\n" + NO_MULTILISTE);
- } else {
- String creeListeOpt5 = multilisteOpt5(multiliste);
- System.out.println(creeListeOpt5);
- System.out.println("Entrez le numero de la liste que vous voulez afficher");
- int nbrListes = Clavier.lireInt();
- while (nbrListes != 0 && (nbrListes < nbrListes(multiliste)&& nbrListes > nbrListes(multiliste))) {
- System.out.println("Le numéro doit etre dans la multiliste");
- System.out.println("Entrez le numero de la liste que vous voulez afficher");
- nbrListes = Clavier.lireInt();
- }
- iemeListe(multiliste,nbrListes);
- }
- System.out.println(MSG_ENTRER);
- Clavier.lireFinLigne();
- }
- //Cette option permet d'afficher les items d'une liste faisant partie de la multiliste. Si, au choix de cette option, la multiliste
- //est vide, le programme affiche un message à cet effet. S'il y a au moins une liste dans la multiliste, le programme affiche
- //les listes, numérotées à partir de 1 (avec leur nombre d'items entre parenthèses), et demande à l'utilisateur de saisir le
- //numéro de la liste qu'il veut afficher. Un numéro valide doit être entre 1 et nombre_de_listes_dans_multiliste
- //inclusivement. Vous devez valider ce numéro. Lorsqu'un numéro valide est saisi, le programme affiche le nom de la liste
- //choisie EN MAJUSCULES, suivi de ses items numérotés à partir de 1. (Si la liste choisie ne contient aucun item, le
- //programme affiche quand même le nom de la liste (EN MAJUSCULES), mais suivi d'un message comme quoi la liste
- //est vide.) boolean contains (CharSequence s) pour verifier si il y a une item dans la liste pour envoyer un message
- //}
- public static void main (String[]args){
- String choixMenu;
- //Lecture de la multiliste dans le fichier multiliste.txt. Si le fichier
- //n'existe a la racine du projet ou s'il est vide, la multiliste retournee
- //sera la chaine vide.
- String multiliste = TP2Util.lireMultiliste();
- System.out.println(MSG_PRESENTATION);
- do {
- //lecture et validation du menu
- System.out.print(MENU);
- choixMenu = Clavier.lireString();
- //NOTE :
- //Dans un switch sur une chaine de car., pour tester l'egalite entre
- //l'expression du switch et les constantes des case, c'est la methode
- //equals qui est utilisee (et non l'operateur ==).
- switch (choixMenu) {
- case "1":
- multiliste = creerNouvelleListe(multiliste);
- break;
- case "2":
- multiliste = supprimerListe(multiliste);
- break;
- case "3":
- multiliste = ajouterItems(multiliste);
- break;
- case "4":
- multiliste = retirerItems(multiliste);
- break;
- case "5":
- afficherListe(multiliste);
- break;
- case "6":
- System.out.println(MSG_FIN_PROG);
- break;
- default:
- System.out.println(MSG_ERR_CHOIX_MENU);
- }
- //Notez ici l'utilisation de equals et non ==
- } while (!choixMenu.equals("6"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement