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.
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)); } } }
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"); } } }