Braille Java
Résolu/Fermé
karkol
Messages postés
408
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
17 décembre 2016
-
28 oct. 2013 à 15:12
[Dal] Messages postés 6202 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 janvier 2025 - 29 oct. 2013 à 19:53
[Dal] Messages postés 6202 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 14 janvier 2025 - 29 oct. 2013 à 19:53
A voir également:
- Braille Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Java runtime - Télécharger - Langages
2 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
28 oct. 2013 à 18:25
28 oct. 2013 à 18:25
Ca peux se faire avec deux tableaux, l'un avec des lettres, l'autre avec leur correspondance braille. Au lieu d'un switch tu utilises une boucle.
On peut aussi utiliser des enum pour faire plus ou moins pareil ce qui serait plus structuré que les tableaux.
On peut aussi utiliser des enum pour faire plus ou moins pareil ce qui serait plus structuré que les tableaux.
karkol
Messages postés
408
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
17 décembre 2016
57
29 oct. 2013 à 13:47
29 oct. 2013 à 13:47
Je vais tester tout cela et vous dirais si cela marche.
Modifié par [Dal] le 28/10/2013 à 19:23
Je ne suis pas vraiment un expert aguerri en Java, et je n'y connais rien en braille.
Mais, comme utilisateur de Perl, où créer des hash et les utiliser est tellement naturel et très performant pour ce type de problèmes, je me dirigerai plutôt vers un hash :
https://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html
voire : https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
où la représentation en braille peut servir de clef à la lettre correspondante (et inversement). Est-ce une mauvaise idée ?
Dal
28 oct. 2013 à 20:00
PS. Hashtable est à proscrire depuis Java 2
Voici à quoi ressemble une classe enum en Java (pour la représentation en braille je considère successivement les 6 points de la matrice avec 1 s'il est en relief, 0 sinon).
Modifié par [Dal] le 29/10/2013 à 11:22
J'ai testé ton code. Pour qu'il compile, je crois que ton main devrait être dans les accolades de Braille, et il semble que Java n'aime pas autre chose que "public" pour définir l'enum (et il faut que l'enum soit dans un Braille.java). Sinon, cela marche bien, c'est vraiment étonnant les enums en Java :-)
Avec HashMap, j'aurai fait deux Hash : un dont la clef est une lettre de l'alphabet, pour obtenir l'équivalent en braille, et l'autre dont la clef est la représentation en braille, pour obtenir la lettre de l'alphabet correspondante :
Cela me semble plus économique que de créer un enum. Je suppose qu'on peut aussi faire deux enums dans ton cas (dans deux fichiers .java je suppose...). J'ai un peu expérimenté, mais sans trop de succès, car Java me jette lorsque l'enum consiste en un chiffre tel que 100000.. cela ne serait pas un identificateur acceptable.
Merci pour ta précision sur "Hashtable", tu as tout à fait raison (comme quoi, il faut lire la doc jusqu'au bout).
Dal
Modifié par [Dal] le 29/10/2013 à 13:17
Comme cela :
à moins qu'il y ait un moyen plus malin de copier les clefs et valeurs du premier dans le second en les permutant en utilisant les méthodes keySet() et values().
Dal
29 oct. 2013 à 19:01
Non, rien de tout ça en fait.
J'ai effectivement un morceau de code, tu peux tester en rajoutant juste ça avant et après :
Du coup le fichier sera Test.java, le main est bien à part de la déclaration de l'enum. Le static c'est pour définir la classe interne, on pourra ainsi faire pour accéder à l'enum.
"j'aurai fait deux Hash : un dont la clef est une lettre de l'alphabet, pour obtenir l'équivalent en braille, et l'autre dont la clef est la représentation en braille, pour obtenir la lettre de l'alphabet correspondante"
Personnellement ça me dérange de faire un HashMap sur un caractère, parce que les wrapper comme Character sont bien plus lourd qu'un simple caractère en terme de consommation mémoire (certes là on en aura qu'une trentaine, mais dans l'esprit c'est mal), en plus cela signifie que l'on va utiliser un entier comme valeur de hachage d'un caractère (qui est plus petit).
Enfin, mais c'est plus technique, les enum permettent de manipuler des IdentityHashMap, ce qui permet de tester deux valeurs directement avec == et donc économiser un appel "coûteux" à la méthode equals. Du coup, un autre avantage est de pouvoir faire un switch sur la valeur des enum.
Après, je suis d'accord que pour être complet, une deuxième Map peut-être nécessaire pour faire la recherche dans l'autre sens, et comme je suis borné je ferais cette Map directement au sein de mon enum, ce qui complétera la méthode "valueOf" (générée automatiquement par l'enum) d'une méthode "valueByCode", elle aussi static :
Remarque : j'ai utilisé un String code, parce que si j'avais mis int code, on aurait pu avoir des problèmes avec les entiers commençant par 0, qui sont considérés en octal (j'avais fait la même triche hier avec le constructeur de l'enum.