Utilisation de la classe "Character"

book
date_range
comment0 commentaire
remove_red_eye8344 vues

Aujourd'hui nous allons aborder l'utilisation de la classe "Character" pour le traitement des différents types de caractère : lettres (majuscule/minuscule), chiffres, caractères spéciaux. Nous allons également faire une première approche de l'utilisation d'un affichage graphique avec l'utilisation de la bibliothèque graphique Swing.

 

Enoncé du problème 


 

  • Nous souhaitons réaliser un programme qui demande la saisie d'un caractère au clavier et qui nous retourne en résultat : 

- Type de caractère : lettre, chiffre, espace blanc, autres caractères (&,#,...)

- Caractère en minuscule ou en majuscule

- Code ASCII du caractère si c'est une lettre (on pourrait le faire également pour les autres caractères mais la méthode est la même)

 

Ce que nous verrons : 

 

  1. Utilisation de la classe Character
  2. Première approche d'un affichage graphique par l'intermédiaire de boite de dialogue
  3. Utilisation d'une boucle While et des conditions SI, SINON SI (if, else if)

 

 Création du programme


 

Nous allons tout d'abord créer la class Caracteres qui contiendra nos méthodes, dans notre cas uniquement la méthode principale main.

- Vu que nous allons utiliser un affichage graphique nous allons avoir besoin de la bibliothèque Swing. Il faut donc l'importer dans notre programme pour qu'à la compilation, Java sache où chercher les fonctions que nous utilisons. 

 

import javax.swing.*;
public class Caracteres {
	public static void main (String [ ] args) {

	}
}

Déclaration variables et saisie du caractère


 

Nous allons avoir besoin de trois variables. En effet, le caractère que nous allons taper dans la boîte de saisie va être de type String, nous allons donc devoir le transformer en variable de type Char pour pouvoir utiliser les fonctions de la classe Character. Nous utiliserons enfin une troisième variable de type boolean qui va traiter le cas où le caractère n'est ni une lettre ni un chiffre. (Cette façon de faire n'est pas la plus optimisée mais elle nous permet d'être facilement compréhensible et d'éviter d'imbriquer trop de condition les unes dans les autres). 

String chaine;
char carac; 
boolean negatif=true;
	
	chaine=JOptionPane.showInputDialog(null,"Saisir un caractère","Question",JOptionPane.QUESTION_MESSAGE);
	
	while(chaine.equals("")==true){
		chaine=JOptionPane.showInputDialog(null,"Saisir un caractère","Question",JOptionPane.QUESTION_MESSAGE);
	}
	carac= chaine.charAt(0);

Récupération de la saisie de l'utilisateur :

chaine=JOptionPane.showInputDialog(null,"Saisir un caractère","Question",JOptionPane.QUESTION_MESSAGE);

 

La fonction JOptionPane.showInputDialog retourne un objet de type String. Elle prend pour paramètre :

 - La frame : on ne détaillera pas celà ici, la valeur null va placer la boite de dialogue au mieux, généralement au milieu de l'écran. 

- Le texte de la boite de dialogue : "Saisir un caractère"

- Le titre de la fenêtre : "Question"

- Le type de message : "JOptionPane.QUESTION_MESSAGE" pour une question, il existe également : 

  • ERROR_MESSAGE
  • INFORMATION_MESSAGE
  • WARNING_MESSAGE
  • PLAIN_MESSAGE

 

On peut passer encore d'autres paramètres comme le type de boutons (Oui/Non, OK) ou l'icône à utiliser. 

while(chaine.equals("")==true){
		chaine=JOptionPane.showInputDialog(null,"Saisir un caractère","Question",JOptionPane.QUESTION_MESSAGE);
	}

Ici on utilise la fonction chaine.equals pour vérifier le contenu de la chaine et si elle est vide (i.e : si l'utilisateur a validé sans taper de caractère), on redemande la saisie.

 

carac= chaine.charAt(0);

Enfin la fonction .charAt(0) va récupérer le premier caractère de la chaine, c'est à dire le caractère qui a été tapé (attention le premier caractère a pour numéro 0 et pas 1) et la variable carac de type char va prendre cette valeur. 

 

Utilisation des fonctions de la classe Character


Nous allons utiliser des méthodes prédéfinies de la classe Character. Ces méthodes sont de type boolean, et prennent pour paramètre un char. On pourra donc utiliser des conditions du type if, else if.  

Et afficher le résultat suivant le fait que la variable qu'on regarde vérifie la condition ou non. 

Remarque : Quand on écrit par exemple if(Character.isLetter(carac)), l'ordinateur comprend que l'on vérifie if(Character.isLetter(carac)==true). Il n'y a pas besoin de préciser ==true (est vraie), c'est la valeur par défaut. Par contre si on voulait vérifier que le caractère n'est pas une lettre il faudrait écrire if(Character.isLetter(carac))==false. (Ou mais ce n'est pas le propos ici, utiliser la négation "!" : if(!(Character.isLetter(carac))) )

 

Nous allons donc utiliser différentes Méthodes de la classe Character pour indiquer de quel type est le caractère que nous avons saisi. 

  • boolean isLetter(char carac) : Testera si le caractère est une lettre.
  • boolean isDigit(char carac) : Testera si le caractère est un chiffre.
  • boolean isLowerCase(char carac) : Testera si la lettre est en minuscule.
  • boolean isUpperCase(char carac) : Testera si la lettre est en majuscule.
  • boolean isWhitespace(char carac) : Testera si le caractère est un espace blanc.
     

- La variable "negatif" permet uniquement de traiter le cas où un caractère n'appartient à aucune des catégories énoncées plus haut par exemple : &,",', ...

- Nous n'allons pas détaillez la saisie des conditions, nous allons tester si le caractère est en majuscule uniquement si c'est une lettre, ...

 

Affichage : JOptionPane.showMessageDialog


Nous voulons afficher le résultat dans une boîte de dialogue nous allons donc utiliser la méthode showMessageDialog de JOptionPane

Pas de grande nouveauté par rapport à showInputDialog. C'est pourquoi nous ne regarderons que le cas où le caractère saisi est une lettre en majuscule.

 

JOptionPane.showMessageDialog(null,"Le caractère saisi est une lettre majuscule. (code ASCII : "+(int)carac+")\n"+"Le caractère en minuscule devient "+Character.toLowerCase(carac),"Résultat",JOptionPane.INFORMATION_MESSAGE);

Nous retrouvons : JOptionPane.showMessageDialog(frame, "texte", "titre de la fenêtre", type_de_message).


Comme nous affichons un résultat, on utilisera JOptionPane.INFORMATION_MESSAGE


(int)carac nous permet de récupérer la valeur numérique en base 10 du caractère saisi (voir : Code ASCII)

 

Enfin les méthodes : Character.toLowerCase(carac) et Character.toUpperCase(carac) nous permettent d'afficher le caractère minuscule (respectivement majuscule) du caractère saisi.

 

Ce qui nous donne :  

 

if(Character.isLetter(carac)){
	
		if(Character.isUpperCase(carac)){
		JOptionPane.showMessageDialog(null,"Le caractère saisi est une lettre majuscule. (code ASCII : "+(int)carac+")\n"+"Le caractère en minuscule devient "+Character.toLowerCase(carac),"Résultat",JOptionPane.INFORMATION_MESSAGE);
		
		
		}
		
		if(Character.isLowerCase(carac)){
		JOptionPane.showMessageDialog(null,"Le caractère saisi est une lettre minuscule. (code ASCII : "+(int)carac+")\n"+"Le caractère en minuscule devient "+Character.toUpperCase(carac),"Résultat",JOptionPane.INFORMATION_MESSAGE);
		
		}
	}
	else if(Character.isDigit(carac)){
		JOptionPane.showMessageDialog(null,"Le caractère saisi est un chiffre","Résultat",JOptionPane.INFORMATION_MESSAGE);
		
	}
	else if(Character.isWhitespace(carac)){
		JOptionPane.showMessageDialog(null,"Le caractère saisi est un espace blanc","Résultat",JOptionPane.INFORMATION_MESSAGE);
	}
	else if(negatif){
		JOptionPane.showMessageDialog(null,"Le caractère saisi est un autre caractère","Résultat",JOptionPane.INFORMATION_MESSAGE);
	}

Articles similaires

Commentaires

Aucun commentaire

Ajouter un commentaire

Vous ne disposez pas les autorisations nécessaires pour poster un commentaire.