PROGRAMMATION JAVA Les classes courants: Les fichiers et expressions régulière
PROGRAMMATION JAVA Les classes courants: Les fichiers et expressions régulière Enseignant: M. N’DOSSANI Année scolaire:2018-2019 SOMMAIRE • Base du langage • Les classes String / Vector/Arraylist /Arrays/ Énumération/ HashTable • Les classes courants • Interfaces graphiques LES CLASSES COURANTES Les fichiers: lecture • On peut utiliser pour cela la classe FileReader. • FileReader(String nomFichier) ouvre un flux de lecture à partir du fichier indiqué. Lance une exception si l'opération échoue. • La classe FileReader possède un certain nombre de méthodes pour lire dans un fichier, méthodes héritées de la classe Reader. • Pour lire des lignes de texte dans un fichier texte, on peut utiliser la classe BufferedReader. BufferedReader(Reader in) ouvre un flux de lecture à partir d'un flux d'entrée in. Ce flux de type Reader peut provenir du clavier, d'un fichier, du réseau, ... Exemple de lecture: on obtient en sortie, à l'écran, le contenu du fichier dont le nom est indiqué sur la ligne de commande. • import java.io.BufferedReader; • java.io.FileReader; java.io.FileNotFoundException; java.io.IOException; class LireLigne { • public static void main(String[] argv) throws IOException {BufferedReader lecteurAvecBuffer = null; String ligne; try { lecteurAvecBuffer = new BufferedReader(new FileReader(argv[0])); }catch(FileNotFoundException exc) {System.out.println("Erreur d'ouverture");} while ((ligne = lecteurAvecBuffer.readLine()) != null) System.out.println(ligne); lecteurAvecBuffer.close(); } } LES CLASSES COURANTES lecture: utiliser un Scanner • class LireFichierTexte { • public static void main(String[] arg) throws java.io.IOException { • java.util.Scanner lecteur ; • java.io.File fichier = new java.io.File(arg[0]); • lecteur = new java.util.Scanner(fichier); • /* ou bien • java.io.InputStream entree = • LireFichierTexteBis.class.getResourceAsStream((arg[0])); • lecteur = new java.util.Scanner(entree); */ • int somme = 0; • while (lecteur.hasNextInt()) somme += lecteur.nextInt(); • System.out.println(somme); • } • } la classe Scanner permet une lecture quelquefois plus aisée des fichiers. Dans notre exemple, il s'agit d'additionner des entiers contenus dans un fichier. On donne encore deux possibilités (), selon qu'on souhaite localiser le fichier par rapport au répertoire d'exécution ou par rapport au bytecode d'une certaine classe. LES CLASSES COURANTES Les fichiers binaires • Exemple 3 : pour lire des entiers dans un fichier ne contenant que des entiers et d’en faire la somme. LES CLASSES COURANTES EXPRESSIONS RÉGULIÈRES les expressions régulières sont exprimées dans une syntaxe très précise, très hermétique Syntaxe d'une classe d'expression régulière Classe de caractère Signification [abc] Un unique caractère qui peut être a, b ou c. [^abc] Le ^ exprime la négation : cette classe représente un unique caractère, qui peut prendre toutes les valeurs, sauf a, b et c. [a-zA-Z] Le - signifie que tous les caractères entre ses bornes sont valides. Cette classe représente un unique caractère alphabétique, minuscule ou majuscule. [a-gmn] Autre exemple d'union : cette classe est constituée de tous les caractères compris entre a et g, du caractère m et du caractère n. [a-g[A-G]] On peut inclure des classes les unes dans les autres. Cette classe représente un unique caractère, compris entre a et g, en minuscule ou en majuscule. Elle est équivalente à [a-gA-G]. [a-g&&[c-k]] Le signe && représente l'intersection. On fait donc là l'intersection entre la classe [a-g] et la classe [c-k]. Il s'agit donc de la classe [c-g]. [a-g&&[^cd]] Ici on réalise l'intersection entre la classe qui représente tous les caractères de a à g, et celle qui représente tous les caractères, sauf c et d. Il reste donc a, b, e, f et g, que l'on peut aussi écrire[abefg] ou [abe-g]. [a-z&&[^m-p]] Autre exemple : ici on réalise l'intersection de tous les caractères compris entre a et z, et de tous les caractères sauf ceux compris entre m et p. Il nous reste donc [a-lq-z]. LES CLASSES COURANTES EXPRESSIONS RÉGULIÈRES Caractère de début ou de terminaison Signification ^ Un début de ligne. $ Une fin de ligne. \b Le début ou la fin d'un mot. \B Le début ou la fin d'un élément qui n'est pas un mot. \A Le début d'une entrée. \G La fin du morceau de texte qui a été trouvé précédemment. \Z La fin d'une entrée, sauf s'il s'agit de la fin du texte. \z La fin d'une entrée, y compris s'il s'agit de la fin du texte. Classe prédéfinie Classe équivalente Signification . Un unique caractère quelconque. \d [0-9] N'importe quel chiffre. \D [^0-9] N'importe quel caractère qui n'est pas un chiffre. \s [ \t\n\x0B\f\r] N'importe quel caractère blanc (espace, tabulation, retour-chariot, etc...). \S [^\s] N'importe quel caractère qui n'est pas un blanc. Notons que l'on peut prendre la négation d'une classe prédéfinie. \w [a-zA-Z_0-9] N'importe quel caractère utilisable dans un mot (w est utilisé pour word). Cela représente les caractères alphabétiques minuscules et majuscules, les chiffres et le caractère souligné (underscore). Notons que les caractères accentués ne s'y trouvent pas... \W [^\w] Inverse de la classe précédente. \p{javaLowerCase} N'importe quel caractère minuscule. Notons que cette fois, les caractères accentués s'y trouvent ! \p{javaUpperCase} N'importe quel caractère majuscule. Même chose : les majuscules accentuées s'y trouvent. \p{javaWhitespace} N'importe quel espace. \p{javaMirrored} N'importe quel caractère écrit en miroir au sens de Unicode. LES CLASSES COURANTES EXPRESSIONS RÉGULIÈRES Quantifieurs greed y Quantifieurs reluct ant Signification X ? X ?? X apparaît 0 ou une fois. X * X *? X apparaît un nombre quelconque de fois. X + X +? X apparaît 1 fois et plus. X {n} X {n}? X apparaît exactement n fois. X {n,} X {n,}? X apparaît au moins n fois. X {n, m} X {n, m}? X apparaît au moins n fois et au plus m fois • Enfin signalons l'opérateur | : X | Y signifie que le caractère considéré doit appartenir soit à la classe X , soit à la classe Y . BASE DU LANGAGE Déclaration d'une énumération public enum Civilite { // dans le fichier Civilite.java MADAME, MADEMOISELLE, MONSIEUR } Exemple: enum Civilite {MADAME, MADEMOISELLE, MONSIEUR} ; Civilite civilite = Civilite.MADAME ; Un type énuméré permet de définir un ensemble d'identificateurs pour des constantes exemple public enum Jour { LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE;} class EssaiJour {public static void main(String[] arg) { Jour jour = Jour.valueOf(arg[0]); if (jour == Jour.SAMEDI) System.out.print("fin de semaine : "); switch(jour) {case SAMEDI :case DIMANCHE : System.out.println("se reposer"); break; default : System.out.println("travailler"); break;}}} enum Civilite {MADAME, MADEMOISELLE, MONSIEUR} ; Civilite civilite = Civilite.MADAME ; BASE DU LANGAGE Classe Arrays • Cette classe expose des méthodes utilitaires qui traitent des tableaux. La première méthode exposé permet de convertir un tableau en List : asList(Object[] tab). Attention toutefois, la liste retournée ne supporte pas l'ajout d'objet ! Utilisation de Arrays.asList(...) // jusqu'ici tout va bien... List<String> list = Arrays.asList("Un", "Deux", "Trois") ; // génération d'une UnsupportedOperationException list.add("Quatre") ; La classe Array fournit des méthodes simples pour afficher un tableau sous forme de chaîne de caractères string[] monTableau = new string[] {Un, Deux, Trois}; Arrays.toString(monTableau); BASE DU LANGAGE initialiser un ArrayList la classe ArrayList est utilisée pour stocker et accéder à des données. Il faut dans un premier temps initialiser la liste puis y ajouter les éléments un par un avec la méthode add(). ArrayList couleurs = new ArrayList(); couleurs.add(Rouge); couleurs.add(Bleu); couleurs.add(Vert); Structure de choix simple • syntaxe : if(condition){actions_condition_vraie;} Else {actions_condition_fausse;} On peut imbriquer les structures de choix : if(condition1) if (condition2){......} else //condition2{......} else //condition1 {.......} uploads/Litterature/ programmation-java-seance3.pdf
Documents similaires










-
31
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 20, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.5846MB