[Solved] Atelier 9 : Ensembles dans Java Collection Framework Pour l’atelier de cette semaine, vous utiliserez deux des classes dans Java Collection Framework : HashSet…


Atelier 9 : Ensembles dans le Java Collection Framework Pour l’atelier de cette semaine,…

Pour l’atelier de cette semaine, vous utiliserez deux des classes de Java Collection Framework : et . Vous utiliserez ces classes pour implémenter un correcteur orthographique.

cet atelier, vous devrez utiliser certaines des méthodes définies dans l’interface Set. Rappelez-vous que si set est un Set, alors les méthodes suivantes sont définies :

  • — Renvoie le nombre d’éléments dans l’ensemble.
  • — Ajoute l’élément à l’ensemble, s’il n’y est pas déjà.
  • — Vérifiez si l’ensemble contient l’article.
  • set.isVide() — Vérifiez si l’ensemble est vide.

Vous devrez également être capable de parcourir un ensemble, en utilisant soit un itérateur, soit une boucle for-each.

Lire un dictionnaire

Le fichier words.txt (dans le répertoire code) contient une liste de mots anglais, avec un mot sur chaque ligne. Vous allez rechercher des mots dans cette liste pour vérifier s’ils sont correctement orthographiés. Pour rendre la liste facile à utiliser, vous pouvez stocker les mots dans un ensemble. Comme il n’est pas nécessaire d’avoir les mots stockés dans l’ordre, vous pouvez utiliser un Jeu de hachage pour une efficacité maximale.

Utilisez un scanner pour lire le fichier. Vous pouvez créer un scanner, déposer, pour lire à partir d’un fichier avec une instruction telle que :

filein = nouveau scanner

(nouveau fichier(“/classes/s09/cs225/words.txt”));

et qu’un fichier peut être traité, jeton par jeton, dans une boucle telle que :

while (filein.hasNext ()) {

Chaîne tk = filein.next();

processus (tk); // faire quelque chose avec le jeton

}

(Pour le fichier de liste de mots, un jeton est simplement un mot.)

Démarrez votre programme principal en lisant les mots de words.txt et en les stockant dans un HashSet. Aux fins de ce programme, convertir tous les mots en minuscules avant de les mettre dans l’ensemble. Pour vous assurer que vous avez lu tous les mots, vérifiez la taille de l’ensemble. (Il devrait être 72875.) Vous pouvez également utiliser la méthode contains pour vérifier la présence d’un mot commun dans l’ensemble.

Vérification des mots dans un fichier

Une fois que vous avez la liste des mots d’un ensemble, il est facile de lire les mots d’un fichier et de vérifier si chaque mot est dans l’ensemble. Commencez par laisser l’utilisateur sélectionner un fichier. Vous pouvez soit laisser l’utilisateur saisir le nom du fichier, soit utiliser la méthode suivante :

/**

* Permet à l’utilisateur de sélectionner un fichier d’entrée à l’aide d’un fichier standard

* boîte de dialogue de sélection. Si l’utilisateur annule la boîte de dialogue

* sans sélection de fichier, la valeur de retour est nulle.

*/

fichier statique getInputFileNameFromUser() {

JFileChooser fileDialog = new JFileChooser();

fileDialog.setDialogTitle(“Sélectionnez le fichier pour l’entrée”);

option int = fileDialog.showOpenDialog(null);

si (option != JFileChooser.APPROVE_OPTION)

renvoie null ;

autre

return fileDialog.getSelectedFile();

}

Utilisez un scanner pour lire les mots du fichier sélectionné. Afin d’ignorer les caractères autres que des lettres dans le fichier, vous pouvez utiliser la commande suivante juste après la création du scanner (où in est le nom de la variable du scanner) :

in.useDelimiter (“[^a-zA-Z]+”);

(Dans cette déclaration, “[^a-zA-Z]+” est une expression régulière qui correspond à n’importe quelle séquence d’un ou plusieurs caractères non-lettres. Cela oblige essentiellement le scanner à traiter toute non-lettre comme il traiterait normalement un espace.)

Vous pouvez ensuite parcourir le fichier, lire chaque mot (le convertir en minuscule) et vérifier si l’ensemble contient le mot. À ce stade, imprimez simplement tout mot que vous trouvez qui n’est pas dans le dictionnaire.

Fournir une liste d’orthographes correctes possibles

Un correcteur orthographique ne devrait pas seulement vous dire quels mots sont mal orthographiés, il devrait également vous donner une liste d’orthographes correctes possibles pour ce mot. Méthode d’écriture

corrections TreeSet statiques (String badWord, dictionnaire HashSet)

qui crée et renvoie un TreeSet contenant des variations sur gros mot qui sont contenus dans le dictionnaire. Dans votre programme principal, lorsque vous trouvez un mot qui n’est pas dans l’ensemble des mots légaux, transmettez ce mot à cette méthode (avec l’ensemble). Prenez la valeur de retour et affichez tous les mots qu’elle contient ; ce sont les orthographes correctes suggérées du mot mal orthographié. Voici, par exemple, une partie de la sortie d’un exemple de programme lorsqu’il a été exécuté avec la source HTML de cette page en entrée :

html : (aucune suggestion)

cpsc : (aucune suggestion)

jeu de hachage : jeu de hachage

ensemble d’arbres : ensemble d’arbres

cvs : cs, vs

isempty : est vide

href : réf.

txt : tat, tet, texte, tit, tot, tut

fichier : fichier dans

pré : sont, ere, ire, minerai, pare, pipi, per, tarte, poe, pore, prep, pres,

proie, pro, indiscret, pur, bûcher, re

a suivant : a suivant

liste de mots : liste de mots

getinputfilenamefromuser : (aucune suggestion)

jfilechooser : (pas de suggestions)

boîte de dialogue de fichier : boîte de dialogue de fichier

setdialogtitle : (aucune suggestion)

int: fourmi, dint, indice, in, ina, inc, ind, ink, inn, ins, vous, dans,

il, peluche, menthe, lente, pinte, teinte

Notez que le programme a été écrit de manière à ne pas afficher le même mot mal orthographié plus d’une fois. (Ceci est fait en conservant un ensemble de mots mal orthographiés qui ont été sortis.) Si le corrections() méthode renvoie un ensemble vide, le programme affiche le message “(pas de suggestions)”. Étant donné que les corrections sont stockées dans une arborescence, elles sont automatiquement imprimées par ordre alphabétique sans répétition.

Les corrections possibles que le programme considère sont les suivantes :

• Supprimez l’une des lettres du mot mal orthographié.

• Remplacez n’importe quelle lettre du mot mal orthographié par n’importe quelle autre lettre.

• Insérez n’importe quelle lettre à n’importe quel endroit du mot mal orthographié.

• Échangez deux caractères voisins dans le mot mal orthographié.

• Insérez un espace à n’importe quel endroit du mot mal orthographié (et vérifiez que les deux mots produits sont dans le dictionnaire)

Pour construire les corrections possibles, vous devrez faire un usage intensif des sous-chaînes. Si w est une chaîne, alors w.substring(0,i) est la chaîne composée des premiers caractères i dans w (sans compter le caractère en position i, qui serait le numéro de caractère i+1). Et w.sous-chaîne(i) se compose des caractères de w de la position i jusqu’à la fin de la chaîne. Par exemple, si ch est un caractère, alors vous pouvez changer le je suis caractère de w à ch avec l’instruction :

Chaîne s = w.sous-chaîne(0,i) + ch + w.sous-chaîne(i+1);

De plus, vous trouverez pratique d’utiliser un pour boucle dans laquelle la variable de contrôle de boucle est un carboniser:

for (char ch=”a”; ch <= 'z'; ch++) { ...



Source link

Laisser un commentaire