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

 


 

Comme equals () mais la comparaison est faite sans tenir compte des majuscules/minuscules des chaînes comparées.

 

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)

 

Exemple :

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 :

String chaine = "toto";

chaine = chaine.replace('o','i');

 

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;
}