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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
| import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Methode3 {
/**
* Testes deux String pour vérifier qu'elles sont de taille 1 et que leur unique caractère est différent.
* @param x la première chaîne à tester
* @param y la deuxième chaîne à tester
* @return true si toutes les conditions sont vérifiées, false sinon
*/
public static boolean DiffChar(String x, String y)
{
boolean bon = false;
if (x.length() == 1 && y.length() == 1 && x.charAt(0) != y.charAt(0) && x!=null && y!=null) bon = true;
return(bon);
}
/**
* Testes un mot et vérifie si il contient le caractere des variable x et y. Auquel cas il renvoit false.
* @param produit contient une chaine de caractère, ex: [la vache rit]
* @param x est initialisé de une lettre avec une lettre differente de char y
* @param y est initialisé de une lettre avec une lettre differente de char x
* @return true si tout les caracteres sont vérifiées et accepter, false sinon
*/
public static boolean valider(String produit, char x, char y){
boolean resultat = true;
int i = 0;
while (i < produit.length() && resultat == true){
if (produit.charAt(i) == x || produit.charAt(i) == y){
resultat = false;
}
else i++;
}
return resultat;
}
/**
* Trie par ordre lexicographique un tableau de string
* @param s le tableau de string des caractere
* @param tab le tableau vide qui se remplira de mot à chaque passage
* @param i compteur qui commence initialisé a 0 et incrémente de +1 à chaque passage
* @return un tableau triée par ordre lexicographique
*/
public static void inserer(String s, String[] tab, int i){
System.out.println(i+java.util.Arrays.toString(tab));
if (i < tab.length){
tab[i] = s;
if (i >= 1) Arrays.sort(tab);
}
}
/**
* vérifie si les produit sont valide et les trie si valide dans un autre tableau ou il seront triées par ordre lexicographique
* @param tab est un tableau de string vide de taille 10
* @param car_mot contient un string décomposé en tableau de char
* @param i est initialisé à 0
* @param x est déjà initialisé
* @param y est déjà initialisé
* @return un tableau de mot validé dans l'ordre lexicographique
*/
public static void extraireMots(String[] tab,char[] car_mot, int i, char x ,char y)
{
String temp = "";
String[] tabTemp = new String[10];
int cpt;
int k = 0;
for (cpt = 0 ; cpt < car_mot.length; cpt++ ){ // permet de parcourir le tableau et raligner les mot dans un string à la suite de l'autre
if (car_mot[cpt] == ' '){ //si on arrive a un espace en entre
if (!temp.equals("")){ // pour ne pas enregistrer des espaces qui se suivent
tabTemp[k] = temp; //arriver un un espace il s'agit d'un mot complet que l'on entre dans un string
k++;
}
temp = ""; //on vide le temp
}
else{
temp = temp + car_mot[cpt]; //tant que on n'atteint pas un espace on continue d'écrire le mot
}
tabTemp[k] = temp;
}
System.out.println(java.util.Arrays.toString(car_mot));
System.out.println(java.util.Arrays.toString(tabTemp));
System.out.println(""+tab.length);
System.out.println(java.util.Arrays.toString(tab));
i=0;
for(int l = 0; l < tab.length ; l++){ // 0<10 (nb de mot autoriser)
if(valider(tabTemp[l],x, y)){ //si la méthode valider renvoie true;
inserer(tabTemp[l],tab,i); //si true inserer dans un tableau par ordre lexicographique
i++;
}
}
}
/**
* méthode d'écriture dans un fichier
* @param course contient la liste de cource séparer par des espaces entre les mots
* @param tab est un tableau de string rempli et trié
* @param y
* @param x
* @param i
* @param achat
* @return un tableau de mot validé dans l'ordre lexicographique est écrit dans un fichier texte
*/
public static void ecrire (String course, String tab[], char[] achat, int i, char x, char y) throws FileNotFoundException {
extraireMots(tab,achat,0,x,y);
PrintWriter outputFile = new PrintWriter("liste_de_course.txt");
for (int cpt=0; cpt<tab.length; cpt++)
{
outputFile.println(tab[cpt]);
}
outputFile.close();
}
/**
* permet de lire une liste de produit dans un fichier
* @param max est initialisé au nombre maximum que l'on peut entrer
* @param x est déjà initialisé
* @param y est déjà initialisé
* @return lit dans un fichier une liste de course
*/
public static String[] lire (char x , char y ,int max)throws IOException{
File file = new File("nom.txt");
Scanner inputFile = new Scanner(file);
String tab[] = new String [max];
int cpt=0;
while (inputFile.hasNext()) //permet d'aller jusque à la fin du fichier
{
String mot = inputFile.nextLine();
System.out.println(mot);
tab[cpt]=mot;
cpt++;
}
inputFile.close();
return (tab);
}
public static void main(String[] args) throws IOException {
System.out.println("Entrer vos paramètres (1 lettre par paramètre) ");
boolean bon = false;
String xx;
String yy;
Scanner clavier = new Scanner(System.in);
do {
System.out.println("Entrez x: ");
xx = clavier.nextLine(); //enregistre x
System.out.println("Entrez y: ");
yy = clavier.nextLine(); //enregistre y
bon = DiffChar(xx,yy);
xx = xx.toLowerCase(); //j'accepte que l'on me rentre les lettres x et y en maj
yy = yy.toLowerCase(); //mais je les retransformes en min
} while (bon == false); //dans cette boucle entrer x et y temps que il ne sont pas bon
char x = xx.charAt(0);
char y = yy.charAt(0);
System.out.println("Bienvenue au marché de Pad"+x+"pad"+y);
System.out.println("Entrez vos course, 10 achats maximum");
String[] courses = lire(x,y,10); //clavier.nextLine();
String course = Arrays.asList(courses).toString();
//je suis obliger d'utiliser un tableau de string pour la lecture mais je le retransforme en string
char[] achat = course.toCharArray();
String listeMot[] = new String[10];
System.out.println("On ecris dans un fichier texte les produit valide");
ecrire (course,listeMot,achat,0,x,y);
//extraireMots(course,achat,0,x,y);
System.out.println(java.util.Arrays.toString(listeMot));
}
} |
Partager