Java Practical Work

Computer Science - Software Development · lab

Voir tous les documents en programmation

Travaux pratiques

147

l ments traditionnels de Java

nonc

1) diter, compiler et ex cuter tous les programmes du TD n 1 avec l'environnement de

d veloppement de Java dont vous disposez

2) Visualiser la documentation de Java

a) Visualiser lensemble des packages (ensembles de classes de bases organis es en fonction

de leur domaine dapplication)

b) Visualiser le package java.lang

Remarque g n rale pour tous les TP:

Pour pouvoir visualiser le r sultat dans Microsoft J++, il faut ajouter une saisie clavier. Pour

cela :

1) ajouter apr s la d claration de main : throws java.io.IOException

2) ajouter la derni re ligne de main l'instruction : System.in.read( );

public static void main (String [] args ) throws java.io.IOException

{

...

System.in.read( );

}

Vous comprendrez la signification plus tard dans le cours!

148

nonc

Objets, Classes

1- D finir la classe Date qui permet de repr senter le format de date suivant: 16/03/1998. Cette

classe doit

contenir les m thodes suivantes :

nombreJours : Donne le nombre de jours pour le mois d'une Date

dateValide : Permet de v rifier si une Date est valide.

lendemain : Donne la Date de demain

2- crire la m thode main dans une classe TesterDate qui :

a) cr e une date partir des valeurs jour, mois et ann e introduits partir de la ligne de commande

b) affiche cette date sous le format pr cis en haut

c) si la date est valide

  • affiche le nombre de jours du mois de cette date
  • affiche la date de demain

sinon

Remarques :

  • affiche un message d'erreur

1- Respecter le principe de l'encapsulation en d clarant les attributs et les m thodes.

2- Compl ter la classe Date par d'autres m thodes si c'est n cessaire

Indication :

Pour transformer une cha ne de caract res s en un int que l'on affecte une variable enti re n on peut

crire :

n = Integer.parseInt(s);

parseInt est une m thode de la classe Integer (classe pr d finie dans l'API de Java)

149

Compl ments sur les objets et les classes

nonc

Fournissez la classe Point con ue de mani re ce que le programme suivant fonctionne

correctement:

class TestPoint

{

public static void main (String[ ] args)

{

Point p1 = new Point(1.0, 3.0); // Cr ation du point de coordonn es x=1 et y=3

Point p2 = new Point(5.0, 6.0); // Cr ation du point de coordonn es x=5 et y=6

double d = Point.distance(p1,p2);

p1.affiche (1); // affiche : p1 = (1.0 , 3.0)

p2.affiche (2); // affiche : p2 = (5.0 , 6.0)

// affiche: Distance entre p1 et p2

System.out.println( "\nDistance entre p1 et p2 = " + d);

}

}

Indications :

La distance entre deux points (x1,y1) et (x2,y2) est gale :

La classe pr d finie Math contient des m thodes static permettant de calculer la racine carr et la

puissance d'un certain nombre, voici la d claration de ces m thodes :

Class Math

{

public static double sqrt(double nb) {&} // retourne la racine carr de nb

public static double pow(double nb, double puissance) {&}// retourne nbpuissance

//&

}

150

()()121222yyxxd--+=

Les tableaux

Enonc

Il s'agit de d finir une classe repr sentant un tableau tri (ordre croissant) d'entiers. La classe appel e

TableauTrie aura un attribut priv qui sera un tableau d'entiers.

1) Pr voir deux constructeurs :

Le premier permet d'allouer un tableau dont la capacit est pr cis e par le programmeur

Le second admet comme param tre la dimension du tableau allouer

2) Les m thodes suivantes seront galement pr vues :

void inserer (int entier) : ins re un entier dans le tableau en respectant un ordre croissant sur les

entiers.

void retirer (int entier) : retire un entier donn e, si un tel entier est dans le tableau. Si l'entier figure

plusieurs fois, une seule occurrence est retir e.

void afficher ( ) : affiche le contenu du tableau avec le message suivant au d part "Ceci est un

nouveau affichage".

3) crire la classe EssaiTableauTrie qui contient la m thode main permettant de tester la classe

TableauTrie contenant les instructions suivantes :

Cr ation d'un tableau de taille 10

Insertion des valeurs 1 3 4 dans le tableau

Affichage du tableau

Insertion de la valeur 2 dans le tableau

Affichage du tableau

Insertion de la valeur 0 dans le tableau

Affichage du tableau

Insertion de la valeur 1 dans le tableau

Affichage du tableau

Retirer la valeur 1 du tableau

Affichage du tableau

Retirer la valeur 0 du tableau

Affichage du tableau

Retirer la valeur 4 du tableau

Affichage du tableau

151

Les cha nes de caract res

Enonc

1) Compl ter la classe "Coordonnees" repr sentant les coordonn es dune personne avec les

champs:

nom, pr nom, t l phone, adresse. Munissez-la d'un constructeur.

class Coordonnees

{

private String nom;

private String prenom;

private String telephone;

private String adresse;

//&. compl ter

}

2) Compl ter la classe "CarnetCoordonnees" repr sentant un carnet de coordonn es. Elle

contiendra:

Les attributs priv s suivants :

  • un tableau de coordonn es nomm "carnet"
  • un entier nomm "nbCoordonnees" repr sentant le nombre d' l ments de "carnet"

Les m thodes suivantes :

  • un constructeur pour d finir un carnet vide pouvant contenir 100 coordonn es au maximum
  • void ajouterCoordonnees (Coordonnees c ) : pour ajouter les coordonn es d'une personne dans

"carnet"

  • void chercherCoordonnees (String nom, String prenom) : pour retrouver et afficher les

coordonn es d'une personne (t l phone et adresse) partir de son nom et de son pr nom.

Si cette m thode ne trouve pas les coordonn es de la personne dans carnet, elle affichera un

message d'erreur.

  • void affiche ( ) : pour afficher toutes les coordonn es se trouvant dans carnet.

Voici la classe qui teste la classe Coordonnees :

class Test

{

public static void main (String [ ] args)

{

CarnetCoordonnees c = new CarnetCoordonnees ( );

c.ajouterCoordonnees(new Coordonnees("Ben Ali", "Mohamed", "233152", "Tunis"));

c.ajouterCoordonnees (new Coordonnees("Ben Amor", "Seif", "453689", "Sousse"));

c.ajouterCoordonnees (new Coordonnees("Selmani", "Akram", "289563", "Sfax"));

c.affiche ( );

c.chercherCoordonnees("Ben Ali", "Mohamed");

}

}

// & compl ter

152

H ritage, polymorphisme

Enonc

Application 1:

a) Etape 1

Cr er une classe "Document" comportant les attributs suivant :

String titre, int numId, int nbPages

Cr ez un constructeur par d faut (ie sans argument) qui initialise le titre "X", le num ro 1, le

nombre de pages 0

Cr ez une m thode edition( ) qui affiche les attributs du Document.

Testez votre classe en cr ant un objet dans la m thode principale et en appelant la m thode edition(

).

b) Etape 2

On veut pouvoir saisir sur la ligne de commande le titre, le num ro didentification ainsi que le

nombre de page pour construire un objet du type document : crire un deuxi me constructeur

prenant trois param tres pour tenir compte de ce besoin.

Dans la m thode principale, en fonction du nombre darguments sur la ligne de commande,

appelez lun ou lautre des constructeurs.

Application 2:

On souhaite g rer une biblioth que pouvant contenir diff rents types de documents :

1.

2.

3.

4.

Des documents simples : Ils sont caract ris s par un titre, un num ro

didentification, le nombre de pages => R utilisez la classe Document de l'exercice 1

Des articles : Ce sont des documents simples poss dant une caract ristique

compl mentaire, le nom de leur auteur (repr sentable par un objet de la classe String).

Des livres : Ce sont des articles poss dant une caract ristique compl mentaire, le

nom de leur diteur (repr sentable par un objet de la classe String).

Des p riodiques : Ce sont des documents simples poss dant une caract ristique

compl mentaire, leur fr quence de parution ("Mensuel", "Hebdo" ou "Quotidien").

Chaque document poss de une m thode edition() qui permet dafficher l cran son type (Livre,

Article, &.) et ses caract ristiques.

Chaque document est ajout lors de sa cr ation dans une biblioth que (un objet de la classe Biblio).

Une classe de test sp cifique vous est fournie :

public class Tp2_2 {

public static void main(String args[]) {

Biblio B = new Biblio ();

B.ajoute(new Livre("Bilbo le Hobbit", 1, 1368, "Tolkien", "j'ai lu"));

Publicité

B.ajoute(new Periodique("L'Evenement", 2, 70, "Hebdo"));

B.ajoute(new Livre("Java par la pratique", 3, 540, "Josh Peck", "O'Reilly"));

B.ajoute(new Article("Java est cool", 4, 5, "Toto"));

System.out.println ("La biblioth que contient "+B.taille()+" documents");

B.afficheContenu ();

}

}

153

Voici le squelette de la classe Biblio :

public class Biblio {

private Document[] tabDoc ;

private int nbDoc = 0 ;

private final int MAXDOC = 50 ;

public Biblio() {

tabDoc = new Document ;

}

public void ajoute(Document d) {

& // Ajoute d la biblioth que

}

public void afficheContenu(){

& // Affiche le contenu de la biblioth que

}

public int taille() { return nbDoc ; }

}

Question : Ecrire les classes Document, Article, Livre, Periodique et Biblio, de mani re ce

que la m thode Main de la classe Tp2_2 fonctionne correctement. Utiliser chaque fois que

vous le pouvez la r f rence super.

154

Classes abstraites, Interfaces

Enonc

Il s'agit de compl ter le programme suivant :

class Test

{

public static void main (String [ ] args)

{

Son [ ]listeSons = new Son [2];

Mammifere [ ]listeMammiferes = new Mammifere [2];

Homme h = new Homme("Ali", "Bonjour", 20, false);

Chien ch = new Chien("Snoopy", "Wouah!", 2, "caniches");

listeSons [0] = h;

listeSons [1] = ch;

listeMammiferes [0] = h;

listeMammiferes [1] = ch;

for (int i=0; i<listeSons.length; i++)

{

listeSons .parle ( ); // parle ( ) est polymorphe

listeMammiferes .vitesse ( ); // vitesse ( ) est polymorphe

}

}

}

interface Son

{

void parle ( );

}

absract class Mammifere implements Son

{

// Attributs

String nom, son;

int ge;

// Constructeur

Mammifere (String nom, String son, int age)

{

this.nom = nom;

this.son = son;

this.age = age;

}

// M thode parle affiche le son d'un mammif re

public void parle ( )

{

System.out.println (son+this);

}

// M thode abstraite vitesse

abstract void vitesse();

//... compl ter

}

155

class Homme extends Mammifere

{

boolean mari ;

// ... compl ter

}

class Chien extends Mammifere

{

String race;

// .... compl ter

}

A l'ex cution de Test on obtient l' cran :

Bonjour mon nom est Ali j'ai 20 ans je suis mari

Je cours une vitesse de 20 km/h

Wouah! mon nom est Snoopy j'ai 2 ans j'appartient la race des caniches

Je cours une vitesse de 30 km/h

156

Les exceptions

Enonc

Soit le programme suivant qui calcule la factorielle d'un entier pass comme param tre travers la

ligne de commande :

public class TestFact

{

public static void main (String [ ] args)

{

int n = Integer.parseInt(args[0]);

if (n == 0) System.out.println ("La factorielle de "+n+" est: 1");

else

{

int f = 1;

for (int i=2; i <= n; i++) f = f*i;

System.out.println ("La factorielle de "+n+" est: "+f);

}

}

}

Il s'agit de reprendre ce programme pour l'am liorer en attrapant diff rentes exceptions de fa on

pr ciser la difficult l'utilisateur, lorsque le calcul de la factorielle est impossible.

Les exceptions pr voir sont :

Il n'y a pas de param tre sur la ligne de commande

Le param tre n'est pas entier

Le param tre est n gatif

Pour chacun de ces cas l'erreur doit tre signal e de fa on pr cise l'utilisateur.

Indications :

- Si args[0] n'est pas un entier la m thode parseInt lance une exception instance de

NumberFormatException (du package java.lang)

- Si l'acc s un tableau se fait avec un indice erron (indice n gatif ou sup rieur la taille du

tableau) une exception instance de ArrayIndexOutOfBoundsException (du package java.lang)

est lanc e

157

Corrections des travaux

pratiques

158

l ments traditionnels de Java

Remarque: Il n' y a pas de correction pour ce chapitre, il s'agit seulement de se familiariser avec

l'environnement de d veloppement Microsoft J++

159

Objets, Classes

Solution

class Date

{

// D claration des attributs

private int jour, mois, annee;

// Constructeur

Date (int j, int m, int a)

{

jour = j;

mois = m;

annee = a;

}

// M thode bissextile : priv e car destin e a tre utilis e l'int rieur de cette classe

private boolean bissextile ( )

{

if (annee % 4 == 0) return (true);

else return (false);

}

// M thode nombreJours

int nombreJours ( )

{

int n;

switch (mois)

{

case 1 :

case 3 :

case 5 :

case 7 :

case 8 :

case 10:

case 12:

case 2 :

case 4 :

case 6 :

case 9 :

case 11:

default :

n = 31;

break;

if (bissextile( )) n = 29;

else

n = 28;

break;

n = 30;

break;

n = 0;

break;

}

return (n);

}

// M thode dateValide

boolean dateValide ( )

{

if ((jour > 0) && (jour <= nombreJours ( )) && (mois > 0) && (mois <= 12) && (annee >

Publicité

0))

else

return (true);

return (false);

160

}

// M thode lendemain

Date lendemain ( )

{

Date d = new Date (jour, mois, annee);

if (d.jour < nombreJours ( ))

d.jour++;

else

{

d.jour = 1;

if (d.mois < 12)

d.mois ++;

else

{

d.mois = 1;

d.annee ++;

}

}

return (d);

}

// M thode accesseur getJour

int getJour ( )

{

return (jour);

}

// M thode accesseur getMois

int getMois ( )

{

return (mois);

}

// M thode accesseur getAnnee

int getAnnee ( )

{

return (annee);

}

}

class TesterDate

{

public static void main (String [ ] args)

{

// Cr ation d'un objet Date partir des valeurs jour, mois et annee introduites // partir

de la ligne de commande

Date d = new Date (Integer.parseInt(args[0]), Integer.parseInt(args[1]),

Integer.parseInt(args[2]));

// Affichage de la date

System.out.println ("Date courante:"+d.getJour( ) + "/" + d.getMois( ) + "/" +

d.getAnnee( ));

if (d.dateValide ( ))

{

// Affichage du nombre de jours

System.out.println ("Nombre de jours de ce mois :"+d.nombreJours( ));

// Affichage de la date de demain

161

System.out.println ("Demain sera: "+d.lendemain( ).getJour( ) + "/" +

d.lendemain( ).getMois( ) + "/" + d.lendemain( ).getAnnee( ));

// ou encore

// Date demain = d.lendemain ( ) ;

// System.out.println ("Demain sera: " + demain.getJour( ) + "/" +

demain.getMois( ) + "/" +d.lendemain( ).getAnnee( ));

}

else

}

}

System.out.println ("Cette date n'est pas valide");

162

Compl ments sur les objets et les classes

Solution

class Point

{

// Les attributs

private double x, y;

// Constructeur

Point (double x, double y)

{

this.x = x;

this.y = y;

}

// M thode distance calcule la distance entre deux points

static double distance (Point p1, Point p2)

{

double d;

d = Math.sqrt(Math.pow((p1.x-p2.x),2.0)+ Math.pow((p1.y-p2.y),2.0));

return (d);

}

// M thode affiche : affiche les coordonn s d'un point

void affiche (int n)

{

System.out.println ("p"+n+" = "+ "( "+x+" , "+y+" )");

}

}

163

Les tableaux

Solution

class TableauTrie

{

// D claration des attributs

private int [ ] tab ; // D claration du tableau

private int nbElem ; // Nombre d' l ments du tableau

// Constructeurs

TableauTrie (int n) // Dimension indiqu e par le constructeur

{

tab = new int ;

}

TableauTrie ( )

{

tab = new int [100]; // Dimension indiqu e par le programmeur

}

// M thode inserer : ajoute un l ment au tableau (au bon endroit)

void inserer (int entier)

{

int i=0, j;

if (nbElem < tab.length)

{

// Avancer dans le tableau pour chercher la position d'insertion

while ((tab <entier) && (i < nbElem)) i++;

// D caler droite tous les l ments qui vont se trouver apr s l' l ment

// ins rer

for (j = nbElem; j > i; j--)

{

tab = tab ;

}

// Ins rer l' l ment dans le tableau

tab = entier;

// Incr menter le nombre d' l ments du tableau

nbElem ++;

}

}

// M thode retirer : enl ve un l ment du tableau

void retirer (int entier)

{

int i;

boolean trouve;

// Rechercher l' l ment retirer

for (i = 0, trouve = false; ((i < nbElem)&&(trouve == false)); i++)

{

if (tab == entier) trouve = true;

}

if (trouve)

{

// craser l' l ment retirer en effectuant un d calage gauche de tous

164

// les l ments qui se trouvent droite de l' l ment retirer

while (i < nbElem)

{

tab = tab ;

i++;

}

// D cr menter le nombre d' l ments du tableau

nbElem --;

}

}

// M thode affiche : affiche le contenu du tableau

void affiche ( )

{

System.out.println ("Nouveau affichage :");

for (int i=0; i<nbElem; i++)

System.out.println (tab );

}

}

class EssaiTableauTrie

{

public static void main (String [ ] args)

{

TableauTrie t1 = new TableauTrie (10);

t1.inserer (1);

t1.inserer (3);

t1.inserer (4);

t1.affiche ( ) ;

t1.inserer (2);

t1.affiche ( );

t1.inserer (0);

t1.affiche ( ) ;

t1.inserer (1);

t1.affiche ( ) ;

t1.retirer(1);

t1.affiche ( );

t1.retirer(0);

t1.affiche ( );

t1.retirer(4);

t1.affiche ( );

// on obtient sur cran la fin :

Publicité

1

2

3

}

}

165

Les cha nes de caract res

Solution

class Coordonnees

{

// Attributs

private String nom;

private String prenom;

private String telephone;

private String adresse;

// Constructeur

Coordonnees (String nom, String prenom, String telephone, String adresse)

{

this.nom = nom;

this.prenom = prenom;

this.telephone = telephone;

this.adresse = adresse;

}

// Accesseur nom

String getNom ( )

{

return (nom);

}

// Accesseur prenom

String getPrenom ( )

{

return (prenom);

}

// Accesseur telephone

String getTelephone ( )

{

return (telephone);

}

// Accesseur adresse

String getAdresse ( )

{

return (adresse);

}

}

class CarnetCoordonnees

{

// Attributs

private Coordonnees [ ] carnet ;

private int nbCoordonnees ;

// Constructeur

CarnetCoordonnees ( )

{

carnet = new Coordonnees [100];

}

// M thode ajouterCoordonnees : ajoute une coordonn e d'une personne dans carnet

void ajouterCoordonnees (Coordonnees c )

{

166

carnet = c;

nbCoordonnees++;

}

// M thode chercherCoordonnees : affiche l'adresse et le t l phone d'une personne

void chercherCoordonnees (String nom, String prenom)

{

boolean trouve = false;

for (int i=0; i<nbCoordonnees && !trouve; i++)

{

if (nom.equals(carnet .getNom( ))&&

prenom.equals(carnet .getPrenom( ) ))

{

}

trouve = true;

System.out.println ("Nom : "+nom+", Pr nom : "+prenom+",

T l phone : "+carnet .getTelephone( )+", Adresse : " +

carnet .getAdresse ( ));

}

if (!trouve)

System.out.println (nom+" "+prenom+" ne se trouve pas dans le carnet d'adresses");

}

// M thode affiche : affiche toutes les coordonn es de carnet

void affiche ( )

{

for (int i=0; i<nbCoordonnees; i++)

{

System.out.println ("Nom :"+carnet .getNom( )+", Pr nom : " +

carnet .getPrenom( ) +", T l phone: "+carnet .getTelephone( )+", Adresse :

" + carnet .getAdresse( ));

}

}

}

167

H ritage, polymorphisme

Solution

Application 1:

a)

class Document

{

String titre;

int numId;

int nbPages;

Document ()

{

titre = "X";

numId = -1;

nbPages = 0;

}

Document (String t, int num, int nb)

{

titre = t;

numId = num;

nbPages = nb;

}

void edition ( )

{

System.out.println ("Titre = "+ titre);

System.out.println ("numId = "+ numId);

System.out.println ("nbPages = "+ nbPages);

}

}

public class Test

{

public static void main (String[] args)

{

Document d = new Document( );

d.edition( );

}

}

b)

public class Test

{

public static void main (String[] args)

{

Document d;

if (args.length == 0)

d = new Document( );

else

d = new Document(args[0],Integer.parseInt(args[1]), Integer.parseInt(args[2]));

d.edition( );

}

}

Application 2:

class Document

{

String titre;

int numId;

168

int nbPages;

Document ()

{

titre = "X";

numId = -1;

nbPages = 0;

}

Document (String t, int num, int nb)

{

titre = t;

numId = num;

nbPages = nb;

}

void edition ()

{

System.out.println ("Titre = "+ titre);

System.out.println ("numId = "+ numId);

System.out.println ("nbPages = "+ nbPages);

}

}

class Article extends Document

{

String Auteur;

String Type = "Article";

Article (String t, int num, int nb, String aut)

{

super (t, num, nb);

Auteur = aut;

}

void edition ()

{

System.out.println ("Type = "+ Type);

super.edition();

System.out.println ("Auteur = "+ Auteur);

}

}

class Livre extends Article

{

String Editeur;

String Type = "Livre";

Publicité

Livre (String t, int num, int nb, String aut, String edit)

{

super (t, num, nb, aut);

Editeur = edit;

}

void edition ( )

{

System.out.println ("Type = "+ Type);

System.out.println ("Titre = "+ titre);

System.out.println ("numId = "+ numId);

System.out.println ("nbPages = "+ nbPages);

System.out.println ("Auteur = "+ Auteur);

System.out.println ("Editeur = "+ Editeur);

}

}

class Periodique extends Document

{

String Frequence;

String Type = "Periodique";

169

Periodique (String t, int num, int nb, String freq)

{

super (t, num, nb);

Frequence = freq;

}

void edition ( )

{

System.out.println ("Type = "+ Type);

super.edition();

System.out.println ("Fr quence = "+ Frequence);

}

}

class Biblio

{

private Document [] tabDoc;

private int nbDoc = 0;

private final int MaxDoc = 50;

Biblio()

{

}

void ajoute (Document d)

{

tabDoc = new Document ;

tabDoc = d;

}

void afficheContenu ()

{

for (int i =0; i<nbDoc; i++)

{

System.out.println ();

tabDoc .edition();

}

}

int taille ()

{ return nbDoc;}

}

public class Biblio

{

public static void main (String[] args)

{

Biblio B = new Biblio ();

B.ajoute(new Livre("Bilbo le Hobbit", 1, 1368, "Tolkien", "j'ai lu"));

B.ajoute(new Periodique("L'Evenement", 2, 70, "Hebdo"));

B.ajoute(new Livre("Java par la pratique", 3, 540, "Josh Peck", "O'Reilly"));

B.ajoute(new Article("Java est cool", 4, 5, "Toto"));

System.out.println ("La biblioth que contient "+B.taille()+" documents");

B.afficheContenu ();

toto t = new toto () { void affiche2 ( ){System.out.println ("titi"); }};

t.affiche ();

}

}

170

Classes abstraites, Interfaces

Solution

interface Son

{

void parle ();

}

abstract class Mammifere implements Son

{

// Attributs

String nom, son;

int age;

// Constructeur

Mammifere (String nom, String son, int age)

{

this.nom = nom;

this.son = son;

this.age = age;

}

// M thode parle affiche le son d'un mammif re

public void parle ( )

{

System.out.println (son+this);

}

// M thode abstraite vitesse

abstract void vitesse();

// M thode toString red finie

public String toString ( )

{

return (" mon nom est "+nom +" j'ai "+age+" ans");

}

}

class Homme extends Mammifere

{

boolean marie;

// Constructeur

Homme (String nom, String son, int age, boolean marie)

{

super (nom, son, age);

this.marie = marie;

}

// Impl mentation de la m thode vitesse

void vitesse ( )

{

System.out.println ("Je cours une vitesse de 20km/h");

}

// M thode toString red finie

public String toString ( )

{

171

if (marie) return (super.toString() +" je suis marie");

else

return (super.toString() +" je suis c libataire");

}

}

class Chien extends Mammifere

{

String race;

// Constructeur

Chien (String nom, String son, int age, String race)

{

super (nom, son, age);

this.race = race;

}

// Impl mentation de la m thode vitesse

void vitesse ( )

{

System.out.println ("Je cours une vitesse de 30km/h");

}

// M thode toString red finie

public String toString ( )

{

return (super.toString ( ) +" j'appartient la race des "+race) ;

}

}

172

exceptions

Solution

class TestFact

{

public static void main(String [ ] args)

{

try

{

int n = Integer.parseInt(args[0]);

if (n < 0) throw new NombreNegatifException ( );

if (n == 0)

System.out.println ("La factorielle de "+n+" est: 1");

else

{

}

int f = 1;

for (int i=2; i <= n; i++) f = f*i;

System.out.println ("La factorielle de "+n+" est: "+f);

}

catch (ArrayIndexOutOfBoundsException e)

{

System.out.println ("Erreur, il n'y a pas de param tre sur la ligne de

commande!");

}

catch (NumberFormatException e)

{

System.out.println ("Erreur, le param tre n'est pas entier!");

}

catch (NombreNegatifException e)

{

System.out.println ("Erreur, le param tre est n gatif!");

}

}

}

class NombreNegatifException extends Exception

{

}

173