java.util Class StringTokenizer ( chaîne decomposable en jetons )

publicité
A)
Classes associées aux types primitifs
Avec un type primitif, on n'a pas d'objets ni de
méthodes. Grâce aux classes associées (Integer vs int,
Double vs double, …), nous pouvons profiter des champs,
des méthodes implémentés dans ces classes.
On se limite aux deux classes Integer et Double.
1) Classe Integer associée au type int
// Entier le
public final
// Entier le
public final
plus grand:
static int MAX_VALUE;
plus petit:
static int MIN_VALUE;
exemple :
// déterminer l'âge le plus jeune:
int mini = Integer.MAX_VALUE;
for( int i = 0 ; i < age.length ; i++)
if ( age[i] < mini) mini = age[i];
/* constructeurs : */
public Integer(int valeur);
public Integer(String s);
exemples :
Integer K = new Integer(23);
Integer Z = new Integer("2345");
/* quelques méthodes : */
public int intValue();
public static int parseInt(String s);
public static Integer valueOf(String s);
exemples (voir aussi les constructeurs):
K.intValue() retourne l'entier 23 (de type int)
Integer.parseInt("432") retourne l'entier 432
Integer.valueOf("5678") retourne un objet de
la classe Integer dont la valeur "associée" est
5678.
Autres exemples : prochaines pages.
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
46
2) Classe Double associée au type double
// Réel le plus grand:
public final static double MAX_VALUE;
// Réel le plus petit:
public final static double MIN_VALUE;
exemple :
// déterminer la taille la plus grande:
int maxi = Double.MIN_VALUE;
for( int i = 0 ; i < taille.length ; i++)
if ( taille[i] > maxi) maxi = taille [i];
/* constructeurs : */
public Double(double valeur);
public Double(String s);
exemples :
Double K = new Double(1.72));
Double Z = new Double("67.8");
67.8
1.72
K
Z
/* quelques méthodes : */
public double doubleValue();
public static Double valueOf(String s);
Autres exemples : prochaines pages.
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
47
B)
Classe String (chaînes de caractères)
Déclarer et initialiser:
String souhait = "Bonne soirée" ;
String nomPre = new String("Tremblay Pierre");
"Bonne soirée"
Souhait
"Tremblay Pierre"
nomPre
Quelques méthodes de la classe String :
1. la longueur (le nombre de caractères) :
public int length()
exemples :
souhait.length() vaut 12
"A BC".length() vaut 4
2. accès à un caractère à un indice donné
public char charAt(int index)
exemples :
souhait.charAt(0) vaut la lettre 'B'
"Bonsoir".charAt(3) vaut la lettre 's'
3. conversion :
public String toLowerCase() // en minuscules
public String toUpperCase() // en majuscules
exemples :
String nom1 = "Lafleur" ;
String nom2 = nom1.toLowerCase();
nom1 reste "Lafleur" (inchangé)
nom2 vaut "lafleur"
String ch = "1er LanGaGe" ;
String ch2 = ch.toUpperCase();
ch reste "1er LanGaGe" (inchangé)
ch2 vaut "1ER LANGAGE"
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
48
4. comparaison :
public boolean equals (Object unObjet)
exemples :
"Bon".equals("Bon") vaut true
"Bon".equals("bon") vaut false
public boolean equalsIgnoreCase(String autre)
(sans tenir compte de la casse (Maj. vs minuscule)
exemples :
"Bon".equalsIgnoreCase("bon") vaut true
"Bon".equals("bonsoir") vaut false
public int compareTo(String autre)
exemples :
"Bon".compareTo("Bon") vaut 0 (identiques)
"Bon".compareTo("Automne") > 0
(la chaîne "Bon" est alors plus grande que
la chaîne "Automne")
"Bon".compareTo("Dinde") < 0
(la chaîne "Bon" est alors plus petite que
la chaîne "Dinde")
5. recherche :
d'un caractère dans une chaîne :
public int indexOf(char unCar)
exemples :
"Bonsoir".indexOf('n') vaut 2
"Bonsoir".indexOf('z') vaut –1 (non trouvé)
public int lastIndexOf(char unCar)
exemples :
"Bonsoir".lastIndexOf('o') vaut 4
"Bonsoir".lastIndexOf('z') vaut –1 (non trouvé)
d'une sous-chaîne dans une chaîne :
public int indexOf(String ch)
exemples :
"Bonsoir".indexOf("soi"') vaut 3
"Bonsoir".indexOf("si") vaut –1 (non trouvé)
public int lastIndexOf(String ch)
exemples :
"Bonsoir".lastIndexOf("oi") vaut 4
"Bonsoir".lastIndexOf("non") vaut –1 (non trouvé)
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
49
6. sous-chaîne:
public String substring(int debut, int fin)
(indice de debut: inclus, indice fin :exclu)
exemples :
"Bonsoir".substring(2,6) vaut "nsoi"
"Bonsoir".substring(0, 3) vaut "Bon"
public String substring(int debut)
(à partir de l'indice de debut jusqu'à la fin)
exemples :
"Bonsoir".substring(2) vaut "nsoir"
"Bonsoir".substring(4) vaut "oir"
7. etc . . .
//Un exemple sur la classe String
public class TestString
{
public static void main(String [] args) {
// déclarer et initialiser quelques chaînes :
String s1 = "bonsoir" , s2 = "bonsoir", s3 = "Bonsoir",
s4 = "Tu l'as trop ecrase, Cesar, ce Port-Salut";
int i, j ;
System.out.println("Les 4 chaines originales :");
System.out.println(" s1 = " + s1);
System.out.println(" s2 = " + s2);
System.out.println(" s3 = " + s3);
System.out.println(" s4 = " + s4);
// quelques méthodes fréquemment utilisées :
// public int length() : longueur en nombre de caractères
System.out.println(" longueur de s1 : " + s1.length()+ " caractere(s)");
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
50
// public boolean eaquals(Object autreobjet) : objet est-il égale à 1 autre?
if ( s1.equals(s2))
System.out.println(" s1 a le meme contenu que s2");
else
System.out.println(" s1 n'a pas le meme contenu que s2");
System.out.println(" s1 vs s3 : " + s1.equals(s3));
// public int compareTo (String autre_chaîne) : à parler en classe
System.out.println(" s1 vs s3 (encore) : " + s1.compareTo(s3));
// public boolean equalsIgnoreCase(String autre_chaine) : sans distinguer
// majuscule et minuscule
if ( s1.equalsIgnoreCase(s3))
System.out.println(" s1 a le meme contenu que s3 sans casse");
else
System.out.println(" s1 n'a pas le meme contenu que s3 (sans casse)");
// public char charAt(indice) : le caractère qui se trouve à l'indice
System.out.println("Premier caractere de " + s1 + " est : " +
s1.charAt(0));
System.out.println("Dernier caractere de " + s1 + " est : " +
s1.charAt(s1.length() - 1));
// exemple 1 d'utilisation de la méthode charAt
System.out.print(s1 + " a l'envers est : ");
for ( i = s1.length() - 1 ; i >= 0 ; i--)
System.out.print(s1.charAt(i));
System.out.println();
// méthodes pour extraction de sous-chaînes :
// public String substring (int indice_debut) : à partir de l'indice début
System.out.println("s1.substring(3) = " + s1.substring(3));
// public String substring (int indice_debut, int indice_fin) :
// à partir de l'indice début jusqu'à (l'indice_fin -1)
System.out.println("s1.substring(3,5) = "+ s1.substring(3,5));
// public int indexOf(int ch) : un caractère se trouve à quel indice
System.out.println("le caractere o se trouve a l'indice " +
s1.indexOf('o') + " de " + s1);
// public int indexOf(int ch, int a_partir_indice) :
// à partir d'un indice, un caractère se trouve à quel indice
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
51
System.out.println("un autre caractere o se trouve a l'indice " +
s1.indexOf('o',2) + " de " + s1);
System.out.print("Apres avoir fait : s1 = s1.replace('o', 'O'); " +
s1 + " devient : ");
// public String replace(char ancien_car, char nouveau_car)
s1 = s1.replace('o', 'O');
System.out.println(s1);
// Combien de "on" dans "Bonsoir tout le monde" ?
String souhaite = "Bonsoir tout le monde", ch = "on";
int n = 0, indice = 0;
while ( indice >= 0 && indice < souhaite.length()) {
indice = souhaite.indexOf(ch, indice);
if (indice >= 0)
{ n++;
indice++;
}
}
System.out.println("On a " + n + " fois du mot on" + " dans " +
souhaite);
// il y a autres méthodes mais c'est déjà suffisant pour nous
}
}
/* Exécution
Les 4 chaines originales :
s1 = bonsoir
s2 = bonsoir
s3 = Bonsoir
s4 = Tu l'as trop ecrase, Cesar, ce Port-Salut
longueur de s1 : 7 caractere(s)
s1 a le meme contenu que s2
s1 vs s3 : false
s1 vs s3 (encore) : 32
s1 a le meme contenu que s3 sans casse
Premier caractere de bonsoir est : b
Dernier caractere de bonsoir est : r
bonsoir a l'envers est : riosnob
s1.substring(3) = soir
s1.substring(3, 2) = so
le caractere o se trouve a l'indice 1 de bonsoir
un autre caractere o se trouve a l'indice 4 de bonsoir
Apres avoir fait : s1 = s1.replace('o', 'O'); bonsoir devient : bOnsOir
On a 2 fois du mot on dans Bonsoir tout le monde
*/
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
52
C) Format d'affichage
Depuis la version 1.5, Java utilise printf comme le C
pour afficher des expressions.
/* Fichier Formatage.java
* Un peu de formatage (pour les tps)
*
*/
public class Formatage
{
public static void main(String[] args)
{
int age = 23;
System.out.println("1234567890123456789012345678901234567890");
System.out.printf("%5d%3d%12d\n", age, age, age);
System.out.println();
double taille = 1.7258;
System.out.println("1234567890123456789012345678901234567890");
System.out.printf("%6.1f%8.2f\n", taille, taille);
char sexe = 'F';
System.out.println("1234567890123456789012345678901234567890");
System.out.printf("%3c%7.2f metre %s\n", sexe, taille,
(sexe == 'F'? "feminin":"masculin"));
String souhait = "Bonne soiree";
System.out.println("1234567890123456789012345678901234567890");
System.out.printf("%-20s\n", souhait);
System.out.printf("%20s\n", souhait);
}
}
/* Exécution:
1234567890123456789012345678901234567890
23 23
23
1234567890123456789012345678901234567890
1,7
1,73
1234567890123456789012345678901234567890
F
1,73 metre feminin
1234567890123456789012345678901234567890
Bonne soiree
Bonne soiree
Press any key to continue...
*/
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
53
/* Pour présenter "un peu" des résultats
Utile pour les TPs
*/
Classe prédéfinie String
(chaîne de caractères).
Ce document est adapté à partir du document de la compagnie SUN qui se trouve sur le lien :
http://java.sun.com/j2se/1.5.0/docs/api/
J’ai ajouté quelques exemples permettant de comprendre les constructeurs et quelques méthodes utiles de
cette classe.
Comme la classe String fait partie du paquet java.lang (langage Java), on n’a pas besoin d’importer.
La plupart des questions des travaux pratiques utilisent la classe prédéfinie String.
Quelques constructeurs
String()
Initializes a newly created String object so that it represents an empty character sequence.
Exemple : String ch = new String(); // ch est une chaîne vide (aucun caractère)
String(String value)
Initializes a newly created String object so that it represents the same sequence of characters as
the argument; in other words,
the newly created string is a copy of the argument string.
Exemple : String nomPre = new String("Charbonneau Jacques");
NomPre est la chaîne de caractères "Charbonneau Jacques"
etc . . .
Quelques méthodes
char charAt(int index)
Returns the character at the specified index (retourne le caractère à tel indice)
Exemple : "Charbonneau Jacques".charAt(0) vaut ‘C’ et
"Charbonneau Jacques".charAt(1) vaut ‘h’
int compareTo(String anotherString)
Compares two strings lexicographically.
Exemple : "Bon".compareTo("Bal") retourne un entier supérieur à zéro car ‘o’ > ‘a’
(dans l’ordre alphabétique)
 "Bon" > "Bal"
"BON".compareTo("Bon") retourne un entier inférieur à zéro car ‘O’ < ‘o’
(les lettres en majuscules ‘A’, ‘B’, …, ‘O’, … se trouvent avant celles en
minuscules ‘a’, ‘b’, …, ‘o’, …
 "BON" < "Bon"
"BON".compareTo("BON") retourne zéro (les deux chaînes sont
identiques)
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
54
boolean equals(Object anObject)
Compares this string to the specified object.
Exemple : "Bon".equals("Bal") retourne false et "Bon".equals("Bon") retourne
true
boolean equalsIgnoreCase(String anotherString)
Compares this String to another String, ignoring case considerations.
Exemple : "Bon".equals("BON") retourne false mais
"Bon".equalsIgnoreCase("BON") retourne true (sans distinguer
majuscules, minuscules).
int indexOf(int ch)
Returns the index within this string of the first occurrence of the specified
character.
Exemple : "Bonbon".indexOf(‘n’) retourne 2 et "Bonbon".indexOf(‘z’) retourne –
1 (non trouvé)
int indexOf(int ch, int fromIndex)
Returns the index within this string of the first occurrence of the specified
character, starting the search at the
specified index.
Exemple : "Bonbon".indexOf(‘n’, 3) retourne 5 et "Bonbon".indexOf(‘b’, 4)
retourne –1 (non trouvé)
int indexOf(String str)
Returns the index within this string of the first occurrence of the specified
substring.
Exemple : "Bonbon".indexOf(" on") retourne 1 et "Bonbon".indexOf(" onze")
retourne –1 (non trouvé)
int indexOf(String str, int fromIndex)
Returns the index within this string of the first occurrence of the specified
substring, starting at the specified
index.
int lastIndexOf(int ch)
Returns the index within this string of the last occurrence of the specified
character.
Exemple : "Bonbon".lastIndexOf(‘n’) retourne 5 et "Bonbon".lastIndexOf(‘z’)
retourne –1 (non trouvé)
int lastIndexOf(int ch, int fromIndex)
Returns the index within this string of the last occurrence of the specified
character, searching backward starting at the specified index.
int lastIndexOf(String str)
Returns the index within this string of the rightmost occurrence of the specified
substring.
int lastIndexOf(String str, int fromIndex)
Returns the index within this string of the last occurrence of the specified
substring.
int length()
Returns the length of this string (retourne la longueur de la chaîne)
Exemple : "Bonbon".length() retourne 6 (la longueur de la chaîne est 6)
Ne pas oublier les parenthèses pour la méthode length()
String replace(char oldChar, char newChar)
Returns a new string resulting from replacing all occurrences of oldChar in
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
55
this string with newChar.
boolean startsWith(String prefix)
Tests if this string starts with the specified prefix.
boolean startsWith(String prefix, int toffset)
Tests if this string starts with the specified prefix beginning a specified index.
String substring(int beginIndex)
Returns a new string that is a substring of this string.
Exemple : "Bonbon".substring(2) retourne la sous-chaîne "nbon"
String substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this string.
Exemple : "Bonbon".substring(2, 4) retourne la sous-chaîne "nb" (indice 2 inclus,
indice 4 exclu !)
String toLowerCase()
Converts all of the characters in this String to lower case using the rules of
the default locale, which is
returned by Locale.getDefault.
conversion toute la chaîne en lettres minuscules.
Exemple : "Bonbon".toLowerCase() retourne la chaîne "bonbon"
String toString()
This object (which is already a string!) is itself returned.
String toUpperCase()
Converts all of the characters in this String to upper case using the rules of
the default locale, which is returned by Locale.getDefault.
Exemple : "Bonbon".toUpperCase() retourne la chaîne "BONBON"
String toUpperCase(Locale locale)
Converts all of the characters in this String to upper case using the rules of
the given locale.
String trim()
Removes white space from both ends of this string.
Exemple : " Bonjour tout le monde
".trim() retourne la chaîne "Bonjour
tout le monde
".trim()
static String valueOf(boolean b)
Returns the string representation of the boolean argument.
static String valueOf(char c)
Returns the string representation of the char argument.
static String valueOf(char[] data)
Returns the string representation of the char array argument.
static String valueOf(char[] data, int offset, int count)
Returns the string representation of a specific subarray of the char array
argument.
static String valueOf(double d)
Returns the string representation of the double argument.
static String valueOf(float f)
Returns the string representation of the float argument.
static String valueOf(int i)
Returns the string representation of the int argument.
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
56
static String valueOf(long l)
Returns the string representation of the long argument.
static String valueOf(Object obj)
Returns the string representation of the Object argument.
Classe prédéfinie Integer (objets associés
aux entiers).
Ce document est adapté à partir du document de la compagnie SUN qui se trouve sur le lien :
http://java.sun.com/j2se/1.5.0/docs/api/
J’ai ajouté quelques exemples permettant de comprendre les constructeurs et quelques méthodes utiles de
cette classe.
Comme la classe Integer fait partie du paquet java.lang (langage Java), on n’a pas besoin d’importer.
Quelques exemples du cours IFT 1170 utiliseront la classe prédéfinie Integer.
Pourquoi a t-on besoin de la classe Integer ?
- pour utiliser ses champs prédéfinis
- pour appliquer des méthodes appropriées sur leurs objets.
Quelques champs d’information :
static int MAX_VALUE
The largest value of type int.
Integer.MAX_VALUE est une constante de la classe Integer. Elle représente l’entier le
plus grand 2147483647
static int MIN_VALUE
The smallest value of type int.
Integer.MIN_VALUE est une constante de la classe Integer. Elle représente l’entier le
plus petit -2147483648
Constructeurs
Integer(int value)
Constructs a newly allocated Integer object that represents the primitive int argument.
Exemple : Integer z = new Integer(12) ; z est un objet de la classe Integer représentant l’entier 12
Integer(String s)
Constructs a newly allocated Integer object that represents the value represented by the string.
Exemple : Integer z = new Integer("432") ; z est un objet de la classe Integer représentant l’entier 432
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
57
Quelques méthodes utiles
boolean equals(Object obj)
Compares this object to the specified object.
float floatValue()
Returns the value of this Integer as a float.
int intValue()
Returns the value of this Integer as an int.
static int parseInt(String s)
Parses the string argument as a signed decimal integer.
String toString()
Returns a String object representing this Integer's value.
static Integer valueOf(String s)
Returns a new Integer object initialized to the value of the specified String.
Notez que l’affectation int age = Integer.parseInt(“27“) ;
affecte à la variable age la valeur 27
Soit le tableau des ages : int age[] = { 25, 12, 70, 97, 12, 40, 28 };
Le bloc d’instructions suivantes permettant de déterminer et d’afficher l’âge le plus
grand :
int ageMax = Integer.MIN_VALUE;
for (int i = 0 ; i < age.length ; i++)
if ( age[i] > ageMax )
ageMax = age[i];
System.out.println("Age maximum : " + ageMax);
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
58
Classe prédéfinie :
StringTokenizer
java.util
Class StringTokenizer ( chaîne decomposable en jetons )
java.lang.Object
java.util.StringTokenizer
Jeton (token) est une sous-chaîne entre 2 séparateurs.
Voir exemple Token.java
Constructor Summary
StringTokenizer(String str)
Constructs a string tokenizer for the specified string.
StringTokenizer(String str, String delim)
Constructs a string tokenizer for the specified string.
etc . . .
Method Summary
int countTokens()
Calculates the number of times that this tokenizer's nextToken method can be called
before it generates an exception.
boolean hasMoreElements()
Returns the same value as the hasMoreTokens method.
boolean hasMoreTokens()
Tests if there are more tokens available from this tokenizer's string.
Oui ou Non si la chaîne dispose encore de jetons
Object nextElement()
Returns the same value as the nextToken method, except that its declared return
value is Object rather than String.
String nextToken()
Returns the next token from this string tokenizer.
Retourner le jeton courant et avancer au prochain jeton
String nextToken(String delim)
Returns the next token in this string tokenizer's string.
IFT 1170, automne 2006 (par Le Van N.)
Chapitre 3 : quelques classes prédéfinies
59
Téléchargement