Exercice java programme de conversion majuscules minuscules
But: | Ecrire un programme de conversion majuscules/minuscules | |||
Thème: | type char | |||
Fichiers: | - |
Selon la norme Unicode, les lettres majuscules A..Z ont les codes 65 à 90 et les lettres minuscules a..z ont les codes 97 à 122:
------------------------------------------------------------------
65 = A 79 = O 97 = a 111 = o
66 = B 80 = P 98 = b 112 = p
67 = C 81 = Q 99 = c 113 = q
68 = D 82 = R 100 = d 114 = r
69 = E 83 = S 101 = e 115 = s
70 = F 84 = T 102 = f 116 = t
71 = G 85 = U 103 = g 117 = u
72 = H 86 = V 104 = h 118 = v
73 = I 87 = W 105 = i 119 = w
74 = J 88 = X 106 = j 120 = x
75 = K 89 = Y 107 = k 121 = y
76 = L 90 = Z 108 = l 122 = z
77 = M 109 = m
78 = N 110 = n
-------------------------------------------------------------------
Ecrivez un programme Conversion.java qui demande à l'utilisateur d'entrer une seule lettre A..Z ou a..z au clavier (utilisez par exemple l'instruction scanner.next().charAt(0)).
Le programme affiche un message d'erreur si le caractère entré ne fait pas partie des lettres demandées. Sinon, s'il s'agit d'une lettre minuscule, la version majuscule de la lettre est affichée. Si au contraire il s'agit d'une lettre majuscule, la version minuscule de la lettre est affichée.
Exemples d'exécution:
Version minuscule : a
Entrez une seule lettre A..Z ou a..z : b
Version majuscule : B
Entrez une seule lettre A..Z ou a..z : *
Caractère non valable
Deux versions du programme vous sont données. La première, plutôt brute, exige de connaître le codage Unicode des caractères, c'est-à-dire de savoir exactement où sont situés les caractères alphabétiques dans cette norme). La seconde, beaucoup plus élégante, utilise simplement le fait que les caractères se suivent selon l'ordre alphabétique dans la norme et que les majuscules sont placées avant les minuscules.
Solution brute :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.Scanner; class Conversion1 { private static Scanner scanner = new Scanner(System.in); public static void main(String args[]) { System.out.print("Entrez une seule lettre A..Z ou a..z : "); char c = scanner.next().charAt(0); if (((int) c > 122) || ((int) c 65) || (((int) c > 90) && ((int) c 97))) { System.out.println("Caractère non valable"); } else if ((int) c 91) { System.out.println("Version minuscule : " + (char) (c + 32)); } else { System.out.println("Version majuscule : " + (char) (c - 32)); } } } |
"Jolie" solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.util.Scanner; class Conversion2 { private static Scanner scanner = new Scanner(System.in); public static void main (String args[]) { System.out.print("Entrez une seule lettre A..Z ou a..z : "); char c = scanner.next().charAt(0); if (( c 'z' ) && ( c >='a')){ c= (char) ((int)c + (int)'Z' - (int)'z'); System.out.println("Version majuscule : " + c); } else if (( c 'Z' )&& ( c >= 'A')){ c=(char)((int)c - (int)'Z' + (int)'z'); System.out.println("Version minuscule : " + c); } else { System.out.println("Caractère non valable"); } } } |