Pendu en Java's cool
Romane
-
Romane -
Romane -
Bonjour,
Dans le cadre de ma spécialité Informatique Sciences du Numérique en Terminale S, je programme sur Java's cool.
J'ai actuellement un pendu à faire, le mot à deviner doit être choisi dans une liste d'environ 20000 mots mais je suis bloquée ensuite car je n'arrive pas à transformer les lettres avec des accents en lettres correspondantes sans accent afin de mettre tout le mot en majuscule après.
Quelqu'un saurait-il comment faire ?
Merci d'avance
Dans le cadre de ma spécialité Informatique Sciences du Numérique en Terminale S, je programme sur Java's cool.
J'ai actuellement un pendu à faire, le mot à deviner doit être choisi dans une liste d'environ 20000 mots mais je suis bloquée ensuite car je n'arrive pas à transformer les lettres avec des accents en lettres correspondantes sans accent afin de mettre tout le mot en majuscule après.
Quelqu'un saurait-il comment faire ?
Merci d'avance
3 réponses
-
Un switch sur le caractère te permettrait de faire ça facilement :
public static String removeAccent(char c)
{
switch (c)
{
case 'e': case 'é': case 'è': case 'ê': return "e";
case 'E': case 'É': case 'È': case 'Ê': return "E";
// ...
}
}-
-
Remarque : il est possible d'utiliser les méthodes et classes de Java pour ne pas avoir à recoder tous les accents à la main. C'est d'autant plus utile que Java supporte l'Unicode, soit 63000 caractères définis, dont 48400 lettres. Tout refaire serait donc fastidieux... et inutile !
Voici un code utilitaire pour faire cela, mais je me doute qu'il risque d'être un peu ardu à comprendre.
import static java.lang.Character.UnicodeBlock.*; import java.lang.Character.UnicodeBlock; import java.text.Normalizer; public class CharactersTools { public final static String removeCombiningMarks(String str) { StringBuilder sb = new StringBuilder(); for (char c : Normalizer.normalize(str, Normalizer.Form.NFD).toCharArray()) { UnicodeBlock ub = UnicodeBlock.of(c); if (!ub.equals(COMBINING_DIACRITICAL_MARKS) && !ub.equals(COMBINING_DIACRITICAL_MARKS_SUPPLEMENT) && !ub.equals(COMBINING_HALF_MARKS) && !ub.equals(COMBINING_MARKS_FOR_SYMBOLS)) sb.append(c); } return sb.toString(); } }public class Test { public static void main(String[] args) { System.out.println(CharactersTools.removeCombiningMarks("abc 123 àéï ÂÙÖ #*%")); // abc 123 aei AUO #*% } }
-
-
-
Le Java's Cool c'est du Java, il y a juste des facilités d'usages pour vous materner un peu, ce qui du coup peut effectivement entraîner des limitations d'usages, mais rien de fondamental.
Par exemple au lieu depublic static void main(String[] args)
qui est le point d'entrée Java, tu auras juste levoid main()
en Java's Cool, mais ça fait pareil. De même que leprintln
en Java's Cool est un raccourci auSystem.out.println
du Java.
Je viens d'adapter mon code Java pour le faire rentrer dans la proglet javaProg, sur le fond il est tout à fait compatible avec Java's Cool, il y a juste la forme qui change un peu.
import static java.lang.Character.UnicodeBlock.*; import java.lang.Character.UnicodeBlock; import java.text.Normalizer; public final static String removeCombiningMarks(String str) { StringBuilder sb = new StringBuilder(); for (char c : Normalizer.normalize(str, Normalizer.Form.NFD).toCharArray()) { UnicodeBlock ub = UnicodeBlock.of(c); if (!ub.equals(COMBINING_DIACRITICAL_MARKS) && !ub.equals(COMBINING_DIACRITICAL_MARKS_SUPPLEMENT) && !ub.equals(COMBINING_HALF_MARKS) && !ub.equals(COMBINING_MARKS_FOR_SYMBOLS)) sb.append(c); } return sb.toString(); } void main() { println(removeCombiningMarks("abc 123 àéï ÂÙÖ #*%")); // abc 123 aei AUO #*% }
-
-