3.
Principales fonctions et procédures de manipulation de
caractères
Elles appartiennent à la classe Character.
3.1. Fonctions de tests d'un
caractère
public static boolean isDigit (char ch)
Renvoie true si le
caractère ch est un
chiffre.
public static boolean isLetter (char ch)
Renvoie true si le
caractère ch est une
lettre.
public static boolean isLetterOrDigit (char ch)
Renvoie true si le
caractère ch est un chiffre
ou une lettre.
public static boolean isLowerCase (char ch)
public static boolean isUpperCase (char ch)
Ces méthodes renvoient
true si le
caractère ch est
respectivement une minuscule ou une majuscule.
public static boolean isWhitespace (char ch)
Renvoie true s'il s'agit d'un caractère d'espacement et faux sinon.
Exemple :
char c =
'D';
System.out.println ("Est-ce que " + c + " est une lettre ? ");
System.out.println ("Réponse : " +
Character.isLetter(c));
3.2. Fonctions de conversion
d'un caractère
public static char toLowerCase (char ch)
public static char toUpperCase (char ch)
Ces méthodes renvoient le caractère
ch converti
respectivement en minuscule ou en majuscule
Exemple :
char
ce='a';
System.out.println ("ce : " +
Character.toUpperCase(ce));
public static int digit (char ch, int b)
Renvoie le nombre correspondant au
caractère ch en base b ou
-1 si le
caractère ch est incorrect
en base b.
Exemple :
char
ce='B';
System.out.println ("ce : " +
Character.digit(ce,16));
4. Principales
fonctions et procédures de manipulation de chaînes de
caractères
Elles appartiennent à la classe String.
Ainsi que nous
l'avons vu :
. l'affectation
se fait par l'opérateur = et non par une fonction particulière
comme c'est le cas en C.
. la
concaténation se fait avec l'opérateur +
4.1. Longueur d'une chaîne
public
int length()
Renvoie la
longueur de la chaîne
Exemple :
String chaine= "Salut à tous";
System.out.println ("Nombre de caractères : " +
chaine.length);
4.2. Comparaison de 2
chaînes
Plusieurs
fonctions peuvent être utilisées.
·
public boolean equals(Object objet)
Renvoie
true si les 2 chaînes sont identiques (casse prise en compte) et
false sinon.
Exemple :
String instrument="piano";
String bruit="tambour";
System.out.println("les 2 chaînes sont-elles
identiques ? ");
System.out.println("Réponse : " +
instrument.equals(bruit));
System.out.println("Réponse : " +
instrument.equals("PIANO")) ;
- public
boolean equalsIgnoreCase (String
autreChaine)
Comme
equals
() mais la comparaison est faite sans tenir compte
des majuscules/minuscules des chaînes comparées.
- public int
compareTo (String autreChaine)
Compare une
chaîne de caractères avec autreChaine. Renvoie une valeur négative,
nulle, ou positive suivant que la chaîne de caractères est
respectivement inférieure, égale ou supérieure à celle transmise en
paramètre.
Exemple
:
String instrument="piano";
String bruit="tambour";
System.out.println("Réponse : " +
instrument.compareTo(bruit));
// Réponse : -4
System.out.println("Réponse : " +
instrument.compareTo(instrument)); // Réponse :
0
System.out.println("Réponse : " +
instrument.compareTo("PIANO")); // Réponse :
32
4.3. Trouver un caractère dont
on connaît l’index
public char
charAt (int index)
Renvoie le
caractère situé à l'indice index (index compris entre 0
et length () -
1).
Cette fonction
a déjà été vue dans le paragraphe 10.
4.4. Récupération de
sous-chaînes
·
En indiquant la position de début
:
public String substring(int
debut)
·
En indiquant le début et la fin
(l'élément situé à la position de fin sera exclu) :
Public String substring(int debut, int
fin)
String
instrument="piano";
System.out.println("Réponse : " +
instrument.substring(2)) ; // ano
System.out.println("Réponse : " +
instrument.substring(0,3)) ; // pia
System.out.println("Réponse : " +
instrument.substring(3,instrument.length())) ; //
no
4.5. Recherche d'une chaîne ou d'un
caractère dans une chaîne
public int indexOf (int ch)
public int indexOf (int ch, int fromIndex)
public int lastIndexOf (int ch)
public int lastIndexOf (int ch, int fromIndex)
public int indexOf (String str)
public int indexOf (String str, int fromIndex)
public int lastIndexOf (String str)
public int lastIndexOf (String str, int fromIndex)
Renvoient l'indice de la première ou
la dernière occurrence d'un caractère ch ou d'une chaîne str dans une chaîne de caractères,
ou -1 si aucune
occurrence n'a pas été trouvée.
String
instrument="piano";
System.out.println("Réponse :
"+instrument.indexOf('a')); // 2
System.out.println("Réponse :
"+instrument.indexOf(97)); // 2
System.out.println("Réponse :
"+instrument.indexOf('a', 3)); // -1
System.out.println("Réponse :
"+instrument.indexOf("an")); // 2
instrument += "
Steinway";
System.out.println("Réponse :
"+instrument.lastIndexOf('i')); // 9
4.6. Conversion en majuscules ou
minuscules
public String toLowerCase ()
public String toUpperCase ()
Renvoie une chaîne où tous les caractères majuscules sont convertis
en minuscules, et inversement.
Exemple :
String instrument="piano";
System.out.println("Réponse :
"+instrument.toUpperCase()); // Affiche PIANO mais
la
// chaîne contient toujours piano
instrument =
instrument.toUpperCase(); // instrument contient
maintenant PIANO
4.7. Suppression des
caractères d'espacement en tête et en queue de la chaîne
public String trim ()
Renvoie une chaîne où tous les caractères d'espacement en tête et
en queue d'une chaîne de caractères sont supprimés.
Exemple :
String
chaine = "\nBonjour Monsieur\n";
chaine =
chaine.trim();
…
4.8. Remplacement de
caractères
public
String replace(char avant, char apres)
Exemple
:
4.9. Convertir une chaîne en
entier …
Nous avons déjà
étudié comment convertir une chaîne en un autre type. Ici nous
étudions la conversion réciproque.
public static String valueOf (boolean b)
public static String valueOf (char c)
public static String valueOf (int i)
public static String valueOf (long l)
public static String valueOf (float f)
public static String valueOf (double d)
Exemple
:
int nbe=1234;
String chaine =
String.valueOf(nbe);
….
5. Les
tableaux
En Java, les
éléments d'un tableau sont des objets alloués
dynamiquement.
5.1. Les tableaux à une
dimension
Il faut
déclarer le tableau et créer les éléments, tout ceci peut être
effectué en une seule instruction.
// Déclaration
d'un tableau
NomType
NomTableau[];
Exemple : int tabl [
];
// Création des
éléments d'un tableau
NomTableau =
new NomType[Nombre_éléments];
Exemple : tabl = new
int[nombre_elements];
Remarques :
nombre_elements peut être un littéral ou une
variable.
le tableau est initialisé à 0 s'il s'agit d'un tableau
numérique.
// On peut faire
directement la création du tableau
Exemple : int tabl [ ]
= new int[nombre_elements];
Comme en C, un
tableau contenant n éléments, a son premier élément à l'indice 0 et
son dernier à l'indice n-1.
NomTableau[ind]
désigne l'élément d'indice ind comme en C.
Le nombre
d'éléments d'un tableau est donné par NomTableau.length ,
attention il ne faut pas mettre () derrière length.
Exemples
:
// Déclaration de références sur des tableaux
int [ ] tableEntiers;
float tableFlottants [ ]; // Les crochets peuvent être avant ou après la variable
String [ ] tableChaines;
// Création des éléments
tableEntiers = new int[12];
tableFlottants = new float[3];
tableChaines = new String[3];
// Création d'un tableau
int [ ] tableEntiers2 = new int [5];
// Création de tableaux initialisés
long [ ] tableLongs = {1L, 2L, 5L};
String [ ] tableChaines2 = {"Bonjour", null, "Bonsoir"};
// Alimentation d'éléments
tableEntiers[0] = 31;
tableChaines[0] = "Bonjour";
tableChaines2[1] = "Salut";
Ecriture d'une
classe de test des tableaux à une dimension :
import java.io.*;
public class
test_tab
{
public static void main(String args[]) throws
IOException
{
int [] tab1 = new int[10];
int i, nb;
int [] tab2;
for (i=0; i<10; i++)
{
System.out.println("Saisir l'élément " + i);
BufferedReader rep = new
BufferedReader(new
InputStreamReader(System.in));
tab1[i] = Integer.parseInt(rep.readLine()) ;
}
for (i=0; i<10; System.out.print("tab1["+i+"] = " + tab1[i++] +
"\t"));
do
{
System.out.println("\nSaisir le nombre d'éléments du
tableau");
BufferedReader rep = new
BufferedReader(new
InputStreamReader(System.in));
nb = Integer.parseInt(rep.readLine()) ;
}
while (nb < 0 || nb > 5);
tab2 = new int[nb];
for (i=0; i<nb; i++)
tab2[i] = tab1[i];
for (i=0; i<nb; System.out.print("tab2["+i+"] = " + tab2[i++] +
"\t"));
}
};
Une fois qu'un
tableau est créé, sa taille ne peut être modifiée ; par contre, la
classe System fournit la méthode arraycopy, elle permet de copier
une partie d'un tableau dans un autre.
public static void arraycopy (Object TabSource, int srcind, Object TabDst, int dstind, int nb)
Copie les nb éléments du tableau
TabSource à partir de
l'indice srcind dans le
tableau TabDst à l'indice dstind.
Dans l'exemple
précédent, pour copier les nb éléments de tab1 dans tab2, on peut
remplacer ce qui figure en gras par :
System.arraycopy
(tab1,0,tab2,0,nb);
5.2. Les tableaux
multidimensionnels
Java permet de créer les tableaux
multi-dimensionnels de deux manières différentes :
1ère façon :
créer un tableau directement avec plusieurs dimensions
OU
2ème façon :
créer la 1ère dimension puis les sous-tableaux, les sous-tableaux
(donc les colonnes si 2 dimensions) pouvant avoir des tailles
différentes.
Exemples 1ère
façon :
int [ ][ ] table1 = new int
[dim1][dim2]; // dim1 et
dim2 peuvent être des littéraux ou bien
// des variables préalablement déclarées
// puis initialisées ou
saisies.
int [ ][ ] table2 = {{15, 20, 30},
{ 5, 10, 15}};
Pour désigner
un élément : c'est comme en C. Par exemple table2[0][1]
désigne le 2ème élément de la 1ère ligne donc 20.
Exemple 2ème
façon :
int [ ][ ] table1 = new int [dim1][ ]; // Création de la première dimension
// (dim1 est un littéral ou bien une variable
// préalablement
// déclarée puis initialisée ou saisie).
int i, j;
for (i = 0; i < dim1; i++)
{
table1 [i] = new int [dim2]; // Création de la deuxième dimension (dim 2 est un
// littéral ou bien une variable préalablement déclarée
// puis initialisée ou saisie, l'initialisation ou
// saisie peut être effectuée dans la 1ère
// boucle for ce qui permettra d'avoir des
// colonnes de taille différente).
for (j = 0; j < dim2; j++)
table1 [i][j] = 1;
}