Vous êtes sur la page 1sur 44

Exercice N 1 Ecrire une classe Clavier qui permet de saisir a partir du clavier Solution import java.io.

*; public class clavier1{ public static String lireString() throws Exception { String ligne_lue=null; try{ BufferedReader entree=new BufferedReader(new InputStreamReader(System.in)); ligne_lue=entree.readLine(); } catch(Exception e){ System.exit(0); } return ligne_lue; } public static float lireFloat() throws Exception { float x=0; try { String ligne_lue=lireString(); x=Float.parseFloat(ligne_lue); } catch(Exception e){ System.out.println("****Erreur de donnees****"); } return x; } public static double lireDouble() throws Exception { double x=0; try { String ligne_lue=lireString(); x=Double.parseDouble(ligne_lue); } catch(Exception e){ System.out.println("****Erreur de donnees****"); } return x; } public static int lireInt() throws Exception { int x=0; try { String ligne_lue=lireString(); x=Integer.parseInt(ligne_lue); } catch(Exception e){ System.out.println("****Erreur de donnees****"); } return x; } public static char lireChar() throws Exception {

char c='\u0000'; try{ String ligne_lue=lireString(); c=ligne_lue.charAt(0); }catch (Exception e){ System.out.println("Erreur de donnees"); } return c; } }

Exercice N 2 crire un programme qui calcule la somme des 100 premiers entiers et indique l'cran le rsultat Solution

public class somme { public static void main(String[] args) { int s=0,i; for(i=1;i<=100;i++) s+=i; System.out.println("voila :"+s); } }

Excution voila :5050 Exercice N 3 crire un programme qui calcule la factorielle dun entier entr par lutilisateur et indique l'cran le rsultat

Solution

public class factorielle { public static void main(String[] args) { int i,n; int fact=1; System.out.println("Entrer une valeur entier"); n=Clavier.lireInt(); for(i=1;i<=n;i++) fact*=i; System.out.println("Le factoriel de "+n+" est : "+fact); } }

Excution Entrer une valeur entier 19 Le factoriel de 19 est : 109641728

Exercice N 4 crire un programme qui affiche la valeur absolue dun nombre rel saisi par lutilisateur

Solution public class valabso { public static void main(String[] args) { double res; int x; char rep='o'; String mod; while(rep=='o') { System.out.println("Entrer une valeur"); x=Clavier.lireInt(); if(x>=0) res=x; else res=-x; System.out.println("La valeur absolu de "+x+" est :"+res); System.out.println("Voulez vous continuer o/n"); mod=Clavier.lireString(); rep=mod.toLowerCase().charAt(0); } System.out.println("Au revoir"); } }

Excution Entrer une valeur 15 La valeur absolu de 15 est :15.0 Voulez vous continuer o/n o Entrer une valeur -60 La valeur absolu de -60 est :60.0 Voulez vous continuer o/n n Au revoir Exercice N 5 Ecrire un programme qui permet de tester si un nombre et ngatif ou positif

Solution public class supp { public static void main(String[] args) { int n; System.out.println("Entrer un entier"); n=Clavier.lireInt(); if(n>0) System.out.println("Le nombre que vous avez entrez est positif"); else

System.out.println("Le nombre que vous avez entrez est negatif"); } } Excution Entrer un entier 10 Le nombre que vous avez entrez est positif Entrer un entier -6 Le nombre que vous avez entrez est positif

Exercice N 6 Il s'agit d'crire une classe servant calculer la racine carre d'un nombre rel de type double. Solution public class rac { public static void main(String[] args) { double n,rac; System.out.println("Entrer une valeur ou 0 pour sortir"); n=Clavier.lireDouble(); while(n!=0) { if(n<0) System.out.println("SvP positif"); else { rac=Math.sqrt(n); System.out.println("La racine carree de "+n+" est :"+rac); } System.out.println("Entrer une valeur ou 0 pour sortir"); n=Clavier.lireDouble(); } } }

Excution Entrer une valeur ou 0 pour sortir 15 La racine carree de 15.0 est :3.872983346207417 Entrer une valeur ou 0 pour sortir -6 SvP positif Entrer une valeur ou 0 pour sortir 0 Exercice N 7 Un patron dcide de calculer le montant de sa participation au prix du repas de ses employs de la faon suivante : S'il est clibataire participation de 20% S'il est mari participation de 25% S'il a des enfants participation de 10% supplmentaires par enfant

La participation est plafonne 50% Si le salaire mensuel est infrieur 6000f la participation est majore de 10% crire le programme qui lit les informations au clavier et affiche pour un salari, la participation laquelle il a droit. Solution public class Alternative { public static void main(String[] args) { char mod; double sal; int nbrenf,par=0; System.out.println("Vous etes marie O/N"); mod=(Clavier.lireString().toUpperCase()).charAt(0); System.out.println("Quel est votre salaire"); sal=Clavier.lireDouble(); if(mod=='O') { par=20; System.out.println("Combien d'enfants"); nbrenf=Clavier.lireInt(); par+=nbrenf*10; } else par=25; if(sal<=6000) par+=10; if(par>50) par=50; System.out.println("La participation est de "+par+'%'); } } Excution Vous etes marie O/N o Quel est votre salaire 6004 Combien d'enfants 1 La participation est de 30%

Exercice N 8 Un vendeur fait des prix avec la quantit vendue Quantit darticle Prix unitaire Q<=20 200 21<=Q<=50 180 Q>50 150

Ecrire un programme java qui permet de demander le nombre darticle et afficher le prix total sachant que : Prix total=Q*PU.

Solution public class qte_vent { public static void main(String[] args) { int qte,PU; double PT; System.out.println("entrer la quantite en stock"); qte=Clavier.lireInt(); if (qte<=20) PU=200; else if(qte<=50){ PU=180; }else PU=150; PT=PU*qte; System.out.println("Le prix total est :"+PT); } }

Excution entrer la quantite en stock -9 Erreur de donnees .... entrer la quantite en stock 16 Le prix total est :3200.0 .... entrer la quantite en stock 40 Le prix total est :7200.0 .... entrer la quantite en stock 80 Le prix total est :12000.0 Exercice N 9 crire un programme qui saisit des entiers et en affiche la somme et la moyenne

Solution public class boucle { public static void main(String[] args) { int s=0,n; float m=0; System.out.println("combien d'entier voulez vous entrer"); n=Clavier.lireInt(); int t[]=new int[n]; for(int i=0;i<t.length;i++) { System.out.println("Entrer la valeur N "+(i+1)); t[i]=Clavier.lireInt();

} for(int i=0;i<t.length;i++) { s+=t[i]; } m=(float)s/t.length; System.out.println("La somme est :"+s+"\nLa moyenne est :"+m); } }

Excution combien d'entier voulez vous entrer 3 Entrer la valeur N 1 15 Entrer la valeur N 2 16 Entrer la valeur N 3 18 La somme est :49 La moyenne est :16.333334 Exercice N 10 Ecrire un programme java qui permet de calculer et dafficher le primtre et la surface dun cercle.

Solution public class perimetre { public static void main(String[] args) { double r,s,p; System.out.print("Entrer le rayon :"); r=Clavier.lireDouble(); s=Math.PI*r*r; p=2*Math.PI*r; System.out.println("la surface du cercle est :"+s); System.out.println("le perimetre du cercle est :"+p); } }

Excution Entrer le rayon :20 la surface du cercle est :1256.6370614359173 le perimetre du cercle est :125.66370614359172 Exercice N 11 Ecrire un programme qui lit un entier au clavier et qui laffiche verticalement.

Solution public class conver { public static void main(String[]args) {

int n; System.out.println("Entrer une valeur"); n=Clavier.lireInt(); String s=String.valueOf(n); for(int i=0;i<s.length();i++){ System.out.println(s.charAt(i)); } } }

Excution Entrer une valeur 152210 1 5 2 2 1 0 Exercice N 12 Ecrire un programme java qui permet dafficher le lendemain dune journe donne et de vrifier le saisie

Solution public class lendeain { public static void main(String[] args) { int year,days,month; System.out.println("entrer l'annee"); year=Clavier.lireInt(); System.out.println("Entrer le mois"); month=Clavier.lireInt(); if(month>12||month<1) { System.out.println("Data Error program will exit"); System.exit(0); } System.out.println("Entrer le jour"); days=Clavier.lireInt(); if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) { if(days==31) { days=1; month+=1; if(month>12) {month=1; year+=1;} }else { days+=1; } } else {

if(days==30) { days=1; month+=1; if(month>12) {month=1; year+=1;} }else { days+=1; } } System.out.println("Le lendemain est "+days+"/"+month+"/"+year); } }

Excution entrer l'annee 1999 Entrer le mois 10 Entrer le jour 13 Le lendemain est 14/10/1999 .... entrer l'annee 1995 Entrer le mois 12 Entrer le jour 31 Le lendemain est 1/1/1996 .... entrer l'annee 1999 Entrer le mois 13 Data Error program will exit

Exercice N 13 Ecrire un programme qui lit au clavier un verbe du premier groupe (il sassura quil est bien termine par er) et qui an affiche la conjugaison au prsent de lindicatif.

Solution public class conjugaison { public static void main (String[]args){ String verbe_entr; final String sujets[]={"Je","Tu","Il/Elle","Nous","Vous","Ils/Elles"}; String termin[]={"e","es","e","ons","ez","ent"}; System.out.print("donnez un verbe regulier du premier groupe :"); while(true){ verbe_entr=Clavier.lireString(); int nbr=verbe_entr.length(); char irr=verbe_entr.charAt(nbr-3); if(irr=='g'){ termin[3]="eons";}

String verbe=verbe_entr.substring(nbr-2,nbr); if(verbe.equals("er")==true){ String verb=verbe_entr.substring(0,nbr-2); for(int i=0;i<sujets.length;i++){ System.out.println(sujets[i]+" "+verb+termin[i]); } }else System.out.print("***il ne se termine pas par er - Donnez-en un autre :");

}} } dvd

Excution donnez un verbe regulier du premier groupe :courir ***il ne se termine pas par er - Donnez-en un autre :manger Je mange Tu manges Il/Elle mange Nous mangeons Vous mangez Ils/Elles mangent

Exercice N 14 Ecrit un programme dun simple jeu de pendu, avec mot prenregistrs. Solution import java.util.*; import java.io.*; class Pendu{ public static int NB_ERREURS_MAX=10; public static void main (String args[])throws Exception{ BufferedReader entree=new BufferedReader(new InputStreamReader(System.in)); int i; String tabMots[] = {"ablation","hypocrisie","interminable","revolution","feudiste","accueil","explosion","reliure"," niais","petit","piquet","blond","punk"}; Random rand=new Random(); int nbAleatoire=rand.nextInt(tabMots.length);

String motADeviner=tabMots[nbAleatoire]; int longueurMotAChercher=motADeviner.length(); char tabMotAChercher[]; tabMotAChercher=new char [longueurMotAChercher]; char lettreSaisie; boolean motTrouve=false; int nbLettresBonnes=0; boolean bonneLettre=false; int erreur=0; boolean identique=false; String continuer=""; int k=0; boolean difference; boolean identique2=false; char verifSaisie[]; verifSaisie=new char [NB_ERREURS_MAX]; System.out.println("*********************************"); System.out.println("*Bienvenue dans le jeu du pendu!*"); System.out.println("*********************************"); System.out.println(""); System.out.print("Voici le mot a trouver: "); for (i=0;i<tabMotAChercher.length;i++){ if (i==0){ tabMotAChercher[i]=motADeviner.charAt(i); } else if (i==tabMotAChercher.length-1){ tabMotAChercher[i]=motADeviner.charAt(i); } else{ tabMotAChercher[i]='-';

} System.out.print(tabMotAChercher[i]); } System.out.println(""); System.out.println(""); System.out.println("-----------------------------------"); System.out.println(""); do{ nbLettresBonnes=0; bonneLettre=false; do{ if ((identique!=false) || (identique2!=false)){ System.out.println(""); System.out.println("-------------------------------------"); System.out.println("ERREUR:Cette lettre a deja ete saisie dans le mot (Appuez sur entree pour continuer)"); continuer=entree.readLine(); System.out.println("-------------------------------------"); System.out.println(""); System.out.print("RAPPEL: le mot a chercher est: "); for (i=0;i<tabMotAChercher.length;i++){ System.out.print(tabMotAChercher[i]); } System.out.println(""); System.out.println(""); } System.out.print("Quelle lettre desirez vous entrer? ") ; lettreSaisie=entree.readLine().toLowerCase().charAt(0); difference=true; identique=false; identique2=false; for (i=0;i<NB_ERREURS_MAX;i++){ if (verifSaisie[i]==lettreSaisie){ identique2=true; }

for (i=1;i<tabMotAChercher.length-1;i++){ if ((lettreSaisie==motADeviner.charAt(i)) || (identique2==true)){ difference=false; } }

if (difference==true){ verifSaisie[k]=lettreSaisie; k=k+1; } for (i=1;i<tabMotAChercher.length-1;i++){ if (lettreSaisie==tabMotAChercher[i]){ identique=true; } } } while((identique!=false) || (identique2!=false)); System.out.println(""); for (i=1;i<tabMotAChercher.length-1;i++){ if (lettreSaisie==motADeviner.charAt(i)){ tabMotAChercher[i]=lettreSaisie; bonneLettre=true; } } if (bonneLettre!=true){

erreur=erreur+1; System.out.print("Aucune lettre ne correspond a votre saisie il vous reste : "+ (NB_ERREURS_MAX-erreur)+" Chances! (Appuyez sur entree pour continuer)"); continuer=entree.readLine(); System.out.println(""); } if (erreur!=NB_ERREURS_MAX){ for (i=1;i<tabMotAChercher.length-1;i++){ if (tabMotAChercher[i]==motADeviner.charAt(i)){ nbLettresBonnes=nbLettresBonnes+1; } if (nbLettresBonnes==motADeviner.length()-2){ motTrouve=true; System.out.println("Vous avez trouvez le mot feliciations!"); System.out.println(""); System.out.println("Le mot etait: "+motADeviner); } } if (motTrouve!=true){ System.out.println("Vous avez trouve en tout "+nbLettresBonnes+" lettres."); System.out.println(""); System.out.print("Maintenant le mot devient: "); for (i=0;i<tabMotAChercher.length;i++){ System.out.print(tabMotAChercher[i]); } System.out.println(""); System.out.println(""); } System.out.println("-----------------------------------"); } } while ((motTrouve==false) && (erreur!=NB_ERREURS_MAX)) ; if (erreur==NB_ERREURS_MAX){

System.out.println("-----------------------------------"); System.out.println("Fin de partie vous avez perdu!"); System.out.println(""); System.out.println("Le mot etait: "+motADeviner); } } } Excution ********************************* *Bienvenue dans le jeu du pendu!* ********************************* Voici le mot a trouver: i----------e ----------------------------------Quelle lettre desirez vous entrer? f Aucune lettre ne correspond a votre saisie il vous reste : 9 Chances! (Appuyez sur entree pour continuer)a Vous avez trouve en tout 0 lettres. Maintenant le mot devient: i----------e ----------------------------------Quelle lettre desirez vous entrer? n Vous avez trouve en tout 2 lettres. ... Maintenant le mot devient: interminab-e ----------------------------------Quelle lettre desirez vous entrer? l Vous avez trouvez le mot feliciations! Le mot etait: interminable ----------------------------------Exercice N 15 Ecrit un programme qui permet dentrer des nombres saisi par le clavier et de les trier Solution public class tri {

public static void main(String [] args) { final int n=8; int t[]=new int[n]; for(int i=0;i<n;i++) { System.out.println("Entrer l'element N "+(i+1)); t[i]=Clavier.lireInt(); } int temp; for(int i=n-1;i>1;i--) { for(int j=0;j<i;j++){ if(t[j]>t[j+1]){ temp=t[j]; t[j]=t[j+1]; t[j+1]=temp; }} } System.out.println(); for(int i=0;i<n;i++){ System.out.print(t[i]+" "); } } } Excution Entrer l'element N 1 Entrer l'element N 10 Entrer l'element N 16 Entrer l'element N 8 Entrer l'element N 4 Entrer l'element N 5 Entrer l'element N 8 Entrer l'element N 7 1 4 5 7 8 8 10 16 Exercice N 16 Ecrit un programme qui permet au utilisateur dentrer des valeurs et de dcaler les valeurs a gauche Solution

1 2 3 4 5 6 7 8

public class decal { public static void main(String [] args) { final int n=8; int t[]=new int[n]; for(int i=0;i<n;i++) { System.out.println("Entrer l'element N "+(i+1)); t[i]=Clavier.lireInt(); } int temp; for(int i=0;i<n-1;i++) { for(int j=0;j<n-1;j++){ temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } } System.out.println(); for(int i=0;i<n;i++){ System.out.print(t[i]+" "); } } }

Excution Entrer l'element 0 Entrer l'element 1 Entrer l'element 2 Entrer l'element 3 Entrer l'element 4 Entrer l'element 5 Entrer l'element 6 Entrer l'element 7 12345670

N 1 N 2 N 3 N 4 N 5 N 6 N 7 N 8

Exercice N 17 Ecrit un programme qui permet dafficher la table daddition

Solution public class addition21 { public static void main(String[] args) throws Exception{ int m=0; for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ m=i+j; System.out.print(m+" "); } System.out.println(); } } }

Excution 0123456789 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 Exercice N 18 Ecrit un programme qui permet dafficher la table de multiplication Solution public class addition21 { public static void main(String[] args) throws Exception{
for(int i=0;i<10;i++){

for(int j=0;j<10;j++){ System.out.print((i*j)+" "); } System.out.println(); } } } Excution 0000000000

0 0 0 0 0 0 0 0 0

1 2 3 4 5 6 7 8 9

23456789 4 6 8 10 12 14 16 18 6 9 12 15 18 21 24 27 8 12 16 20 24 28 32 36 10 15 20 25 30 35 40 45 12 18 24 30 36 42 48 54 14 21 28 35 42 49 56 63 16 24 32 40 48 56 64 72 18 27 36 45 54 63 72 81

Exercice N 19 Ecrit un programme calculateur Solution public class calculatrice { public static void main(String[] args) { float n1,n2; char operateur; String op; while(true) { System.out.println("Entrer le premier nombre ou 0 pour quitter"); n1=Clavier.lireFloat(); if(n1==0) break; System.out.println("Entrer l'operateur +,-,/ ou *"); op=Clavier.lireString(); System.out.println("Entrer la deuxieme nombre"); n2=Clavier.lireFloat(); operateur=op.charAt(0); switch(operateur) { case '+' : System.out.println(n1+" "+operateur+" "+" "+n2+" = "+(n1+n2));break; case '-' : System.out.println(n1+" "+operateur+" "+" "+n2+" = "+(n1-n2));break; case '*' :System.out.println(n1+" "+operateur+" "+" "+n2+" = "+(n1*n2));break; case '/' : { if(n2==0) System.out.println("Impossible de diviser sur 0"); else System.out.println(n1+" "+operateur+" "+" "+n2+" = "+(n1/n2)); } break; default : System.out.println("Svp entrer un operateur correcte");break; } } } } Excution

Entrer le premier nombre ou 0 pour 45 Entrer l'operateur +,-,/ ou * + Entrer la deuxieme nombre 30 45.0 + 30.0 = 75.0 Entrer le premier nombre ou 0 pour 6 Entrer l'operateur +,-,/ ou * / Entrer la deuxieme nombre 0 Impossible de diviser sur 0 Entrer le premier nombre ou 0 pour 4 Entrer l'operateur +,-,/ ou * x Entrer la deuxieme nombre 15 Svp entrer un operateur correcte Entrer le premier nombre ou 0 pour 0

quitter

quitter

quitter

quitter

Exercice N 20 Crer une classe compte dont les attributs membres sont : Numero int Solde float Propriete String 1) Implmenter la classe compte 2) Crer un constructeur par dfaut 3) Crer un constructeur qui utilise le numro et le solde comme argument 4) Crer une mthode qui accde au solde 5) Crer une mthode qui accde au numro de compte 6) Crer une mthode appele dpiter qui retire un montant M du solde Il faut contrler que le montant M doit tre infrieur au solde 7) Crer une mthode appeler crditer qui ajoute un montant M au solde Redfinir la mthode toString 9) Crer une variable de classe qui permet de compter le nombre des comptes bancaires qui sont ouverts 10) Soit la classe compte_Epargne une classe qui tend la classe Compte, lattribut de la nouvelle est : taux=0.05 a. Crer cette nouvelle classe b. Crer une mthode qui permet de calculer lintrts : taux*solde

Solution

La classe Compte public class Compte { private int numero; private float solde; private String propriete; private static int comptes=0; protected Compte(){ } protected Compte(int num,float sol,String propriete){ numero=num; solde=sol; this.propriete=propriete; comptes++; } protected float solde() { return solde; } protected int numero_compte(){ return numero; } protected void debiter(float M){ if (M<=solde) solde-=M; } public String toString() { return numero+" "+solde+propriete; } protected void finalize(){ System.out.println("le compte qui porte le numero "+numero+" a ete detruit avec success"); comptes--; } } La classe compte_Epargne public class compte_Epargne extends Compte{ private float taux=0.05f; public compte_Epargne(int num,float solde,String propriete,float taux){ super(num,solde,propriete); this.taux=taux; } public float interets(){ return taux*super.solde(); } }

Exercice N 21 Voici le source de la classe Livre : public class Livre { // Variables private String titre, auteur; private int nbPages // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } // Accesseur public String getAuteur() { return auteur; } // Modificateur void setNbPages(int n) { nbPages = nb; } Corrigez quelques petites erreurs et ajoutez une mthode main() pour Crer 2 livres, Faire afficher les auteurs de ces 2 livres.

Solution public class Livre { // Variables private String titre, auteur; private int nbPages; // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } // Accesseur public String getAuteur() { return auteur; } // Modificateur void setNbPages(int n) { nbPages = n; } Exercice N 22 accesseurs et modificateurs Modifiez la classe Livre : Ajoutez un accesseur pour la variable titre et la variable nbPages. Ajouter un modificateur pour les variables auteur et titre. Changez le modificateur de nbPages : il ne devra changer le nombre de pages que

si on lui passe en paramtre un nombre positif, et ne rien faire sinon, en affichant un message d'erreur. On remarquera l'intrt des variables private : on peut contrler leur modification dans les ventuelles mthodes qui permettent de les modifier. Dans la mthode main(), indiquez le nombre de pages de chacun des 2 livres, faites afficher ces nombres de pages, calculez le nombre de pages total de ces 2 livres et affichez-le.

Solution public class Livre { // Variables private String titre, auteur; private int nbPages; // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } // Accesseur public String getAuteur() { return auteur; } // Modificateur void setNbPages(int n) { if(n>0) nbPages = n; else System.err.println("le nombre des pages ne doit pas etre negatif"); } public int getnbPages(){ return nbPages; } public String getTitre(){ return titre; } public void setAuteur(String aut){ auteur=aut; } public void setTitre(String tit){ titre=tit; } public static void main(String[]args){ Livre l1=new Livre("standhal","le rouge et le noir"); Livre l2= new Livre("john anouilh","Antigone"); System.out.println(l1.getAuteur()+"\n"+l2.getAuteur()); l1.setNbPages(5); l2.setNbPages(6500); System.out.println("le nombre des pages du 1er livre :"+l1.getnbPages()+"\nle nombre des

pages du 2eme livre :"+l2.getnbPages()); int nbrpages; nbrpages=l1.getnbPages()+l2.getnbPages(); System.out.println("le nombre des pages de ces deux livres est :"+nbrpages); } }

Excution standhal john anouilh le nombre des pages du 1er livre :5 le nombre des pages du 2eme livre :6500 le nombre des pages de ces deux livres est :6505

Exercice N 23 2 classes dans 2 fichiers source pour une application Ecrivez une classe TestLivre dans un fichier TestLivre.java. Cette classe a une seule mthode main() qui fait ce que fait la mthode main() de la classe Livre. Faites excuter la mthode main() de la classe TestLivre. Solution public class TestLivre { public static void main(String[] args) { Livre l1=new Livre("Nabil droussi","moi et java"); Livre l2= new Livre("Nabil droussi","the world of coders"); System.out.println(l1.getAuteur()+"\n"+l2.getAuteur()); l1.setNbPages(5); l2.setNbPages(6500); System.out.println("le nombre des pages du 1er livre :"+l1.getnbPages()+"\nle nombre des pages du 2eme livre :"+l2.getnbPages()); int nbrpages; nbrpages=l1.getnbPages()+l2.getnbPages(); System.out.println("le nombre des pages de ces deux livres est :"+nbrpages); } }

Excution Nabil droussi Nabil droussi le nombre des pages du 1er livre :50 le nombre des pages du 2eme livre :730 le nombre des pages de ces deux livres est :780 Exercice N 24 mthode toString()

Dans la classe Livre, ajoutez une mthode afficheToi() qui affiche une description du livre (auteur, titre et nombre de pages). Utilisez afficheToi() dans la mthode main() de TestLivre. Ajoutez l'instruction System.out.println(livre) o livre dsigne un des livres que vous avez crs. Vous essaierez de comprendre ce qui est affich aprs avoir fait les 2 questions suivantes. Ajoutez une mthode toString() qui renvoie une chane de caractres qui dcrit le livre. Donnez la mthode toString() le mme profil que la mthode de mme nom de la classe java.lang.Object (cherchez dans les API du JDK). Modifiez la mthode afficheToi() pour utiliser toString(). Voyez ce qui est affich maintenant par l'instruction System.out.println(livre).

Solution public String toString(){ return auteur+" "+titre+" "+nbPages; }

Excution john anouilh Antigone 6500 Exercice N 25 Ajoutez 2 constructeurs pour avoir 3 constructeurs dans la classe : un constructeur qui n'a pas de paramtre un qui prend en paramtre l'auteur et le titre du livre, et l'autre qui prend en plus le nombre de pages. Utilisez les 3 constructeurs (et ventuellement d'autres mthodes) pour crer 3 livres de 300 pages dans la mthode main() de TestLivre.

Solution public class Livre { // Variables private String titre, auteur; private int nbPages; // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } public Livre(){ } public Livre(String unAuteur, String unTitre,int nbpages) { auteur = unAuteur; titre = unTitre; this.nbPages=nbpages; }

// Accesseur public String getAuteur() { return auteur; } // Modificateur void setNbPages(int n) { if(n>0) nbPages = n; else System.err.println("le nombre des pages ne doit pas etre negatif"); } public int getnbPages(){ return nbPages; } public String getTitre(){ return titre; } public void setAuteur(String aut){ auteur=aut; } public void setTitre(String tit){ titre=tit; } public String toString(){ return auteur+" "+titre+" "+nbPages; } } //la classe de test public class TestLivre { public static void main(String[] args) { Livre l1=new Livre("Nabil droussi","Java",300); Livre l2=new Livre("standhal","Le rouge et le noir",300); Livre l3=new Livre("moi","tous sur java",300); } }

Exercice N 26 contrle des variables private par les modificateurs Ajoutez un prix aux livres (nombre qui peut avoir 2 dcimales ; type Java float ou double) avec 2 mthodes getPrix et setPrix pour obtenir le prix et le modifier. Ajoutez au moins un constructeur qui prend le prix en paramtre. Testez. Si le prix d'un livre n'a pas t fix, la description du livre (toString()) devra indiquer "Prix pas encore fix".

Solution

public class Livre { // Variables private String titre, auteur; private int nbPages; private double prix=0; // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } public Livre(){ } public Livre(String unAuteur, String unTitre,int nbpages) { auteur = unAuteur; titre = unTitre; this.nbPages=nbpages; } public Livre(String unAuteur,String unTitre,int nbpages,double prix) { this.prix=prix; auteur = unAuteur; titre = unTitre; this.nbPages=nbpages; } // Accesseur public String getAuteur() { return auteur; } // Modificateur void setNbPages(int n) { if(n>0) nbPages = n; else System.err.println("le nombre des pages ne doit pas etre negatif"); } public int getnbPages(){ return nbPages; } public String getTitre(){ return titre; } public void setAuteur(String aut){ auteur=aut; } public void setTitre(String tit){ titre=tit; } public String toString(){ return auteur+" "+titre+" "+nbPages; } public void setPrix(double p){ prix=p;

} public double getPrix() { return prix; } public String toSting(){ String s=null; if(prix==0){ return "Titre :"+titre+" - auteur :"+auteur+" - nombre de pages :"+nbPages+" prix : Prix pas encore fix"; }else { return "Titre :"+titre+" - auteur :"+auteur+" - nombre de pages :"+nbPages+" prix :"+prix; }} public static void main(String[]args){ Livre l=new Livre("Nabil droussi","java exercices",300,15.99); Livre l2=new Livre("howari", "hona wa honak ",250) ; System.out.println(l.toString()); } }

Excution Titre : java exercices - auteur : Nabil droussi - nombre de pages :300 - prix :15.99 Titre : hona wa honak - auteur : howari - nombre de pages :250 - prix : Prix pas encore fix Exercice N 27 Construit la classe Personne dans les attributs Nom,Prenom et Sportpratiqu Et ajouter un constructeur et une methode toString. Construit une autre classe Salarie qui etand la classe personne et en lui ajoutant un salaire, et ajouter a cette classe une methode to String.

Solution La classe Personne public class Personne { private String nom; private String prenom; private String SportPratique; public Personne(String nom,String Prenom,String SP){ this.nom=nom; prenom=Prenom; SportPratique=SP; } public String getnom(){ return nom;} public void setnom(String nom){ this.nom=nom;

} public String getprenom(){ return prenom;} public void setprenom(String prenom){ this.prenom=prenom; } public String getSportPratique(){ return SportPratique;} public void setSportPratique(String SportPratique){ this.SportPratique=SportPratique; } public String toString() { return "nom :"+ nom+" ,prenom :"+ prenom + " ,SportPratique :"+ SportPratique; } } La classe salarie public class salarie extends Personne { private double salaire; public salarie(String nom,String prenom,String SportPratique,double Salaire) { super(nom,prenom,SportPratique); salaire=Salaire; } public double getSalaire() { return salaire; } public void setSalaire(double salaire) { this.salaire = salaire; } public String toString(){ return super.toString()+" Salaire:"+salaire; } public static void main(String[] args) { salarie s1=new salarie("Droussi","Nabil","Basket-ball",500); salarie s2=new salarie("jilali","ferhati","Unknown",52100); System.out.println("Personne 1:"+s1.toString()+"\nPersonne 2:"+s2.toString()); } } Excution Personne 1:nom :Droussi ,prenom :Nabil ,SportPratique :Basket-ball ,Salaire:500.0 Personne 2:nom :jilali ,prenom :ferhati ,SportPratique :Unknown ,Salaire:52100.0

Exercice N 28

Ecrit un programme java qui permet au utilisateur dentrer le nom,prenom et date de naissance et de les enregistrer dans un fichier binaire

Solution import java.io.*; public class Lire_fichier_binaire { public static void main(String[] args) throws Exception{ String nom,prenom; int datenaiss; DataOutputStream entree=new DataOutputStream(new FileOutputStream("c:\\etudiants.bin",true)); char rep='o'; do { System.out.print("nom :"); nom=Clavier.lireString(); System.out.print("prenom :"); prenom=Clavier.lireString(); System.out.print("date de naissance :"); datenaiss=Clavier.lireInt(); entree.writeChars(nom); entree.writeChars(prenom); entree.writeInt(datenaiss); entree.flush(); System.out.println("Voulez vous faire une autre enregistrement o/n"); }while((rep=clavier1.lireChar())=='o'); entree.close(); } }

Excution nom :Droussi prenom :Nabil date de naissance :1986 Voulez vous faire une autre enregistrement o/n o nom :droussi prenom :Mhammed date de naissance :1955 Voulez vous faire une autre enregistrement o/n n Exercice N 29 Ecrit un programme qui permet de lire le fichier binaire quon a cre dans lexo 28

Solution

import java.io.*; public class Creation_fichier_binaire { public static void main(String[] args) throws Exception{ String nom,prenom; int datenaiss; DataInputStream sortie=null; try { sortie=new DataInputStream(new FileInputStream("c:\\etudiant.bin")); } catch(FileNotFoundException e){ System.err.println("Fichier introuvable"); } while(true) { try { nom=sortie.readUTF(); prenom=sortie.readUTF(); datenaiss=sortie.readInt(); System.out.println(nom +" "+prenom+" "+datenaiss);} catch(Exception e){ System.exit(0); } } } } Excution Droussi Nabil 1986 Droussi Hamza 1994

Exercice N 30 Ecrire un programme permettant de crer squentiellement un fichier texte comportant pour differnte personnes les informations suivantes : nom, prenom et annees de naissance

Solution import java.io.*; public class Creation_fichier_texte { public static void main(String[] args) throws Exception{ String nom,prenom; int datenaiss; PrintWriter sortie=new PrintWriter(new FileWriter("c:\\etudiant.txt",true)); char rep='o';

String ligne=null; do { System.out.print("nom :"); nom=Clavier.lireString(); System.out.print("prenom :"); prenom=Clavier.lireString(); System.out.print("date de naissance :"); datenaiss=Clavier.lireInt(); ligne=nom+";"+prenom+";"+datenaiss; sortie.println(ligne); System.out.println("Voulez vous faire une autre enregistrement o/n"); }while((rep=clavier1.lireChar())=='o'); sortie.close(); } }

Excution nom :Droussi prenom :Nabil date de naissance :1986 Voulez vous faire une autre enregistrement o/n o nom :Droussi prenom :Hamza date de naissance :1994 Voulez vous faire une autre enregistrement o/n n Exercice N 31 Ecrit un programme qui permet de lire squentiellement le fichier texte quon a cre dans lexo 30

Solution import java.io.*; public class Lire_fichier_texte { public static void main(String[] args) throws Exception{ BufferedReader entree=null; String ligne_lue,champs[]; boolean eof=false; String nom,prenom,datenaiss; try{ entree=new BufferedReader(new FileReader("c:\\etudiant.txt")); }catch(FileNotFoundException e){ System.err.println("Le fichier etudian.txt est introuvable"); System.exit(0); }

while(!eof){ try {ligne_lue=entree.readLine(); if (ligne_lue==null) eof=true; else { champs=ligne_lue.split(";"); nom=champs[0]; prenom=champs[1]; datenaiss=champs[2]; System.out.println("Nom :"+nom+"\nPrenom :"+prenom+"\nDate de naissance :"+datenaiss); }} catch(ArrayIndexOutOfBoundsException e){ } } } }

Excution Nom :Droussi Prenom :Nabil Date de naissance :1986 Nom :Droussi Prenom :Hamza Date de naissance :1994

Exercice N 32 Ecrit un programme qui permet la conversion dun fichier texte en un fichier binaire

Solution import java.io.*; public class conv_text_binaire { public static void main(String[] args) throws Exception{ BufferedReader entree=null; String ligne_lue,champs[]; boolean eof=false; DataOutputStream sortie=new DataOutputStream(new FileOutputStream("c:\\etudiant.bin",false)); try{ entree=new BufferedReader(new FileReader("c:\\etudiant.txt")); }catch(FileNotFoundException e){ System.err.println("Le fichier etudian.txt est introuvable"); System.exit(0); }

while(!eof){ try {ligne_lue=entree.readLine(); if (ligne_lue==null) eof=true; else { champs=ligne_lue.split(";"); sortie.writeChars(champs[0]); sortie.writeChars(champs[1]); sortie.writeInt(Integer.parseInt(champs[2])); sortie.flush(); }} catch(ArrayIndexOutOfBoundsException e){ } } System.out.println("Le fichier a ete copie avec success"); sortie.close(); entree.close(); } }

Exercice N 33 Ecrit un programme qui permet la conversion dun fichier binaire en un fichier texte

Solution import java.io.*; public class conv_binaire_text { public static void main(String[] args) throws Exception{ PrintWriter sortie=new PrintWriter(new FileWriter("c:\\etudiant.txt")); DataInputStream entree=null; String nom,prenom,ligne; int datenaiss; try{ entree=new DataInputStream(new FileInputStream("c:\\etudiant.txt")); }catch(FileNotFoundException e){ System.err.println("Le fichier etudian.txt est introuvable"); System.exit(0); } while(true){ try {

nom=entree.readUTF(); prenom=entree.readUTF(); datenaiss=entree.readInt(); ligne=nom+";"+prenom+";"+datenaiss; sortie.println(ligne); } catch(Exception e){ break; } } System.out.println("Le fichier a ete copie avec success"); sortie.close(); entree.close(); } }

Examen de passage 1ere Variante Gestion dun htel Un htel souhaite informatiser la gestion des chambres. Chaque chambre est identifie par les informations suivantes : -0 -1 -2 -3 -4 Numro : entier Catgorie : entier Prix : rel Capacit : entier Etat : caractre ( O Occup ou L Libre)

1. Dvelopper la classe Chambre avec deux constructeurs (un constructeur par dfaut et un constructeur qui initialise le numro, la catgorie et le prix de la chambre). Ajouter la mthode daffichage : Affiche_Chambre(). 2. Dans une classe de test, ajouter une mthode qui permet la saisie dune chambre partir du clavier. Cette methode Saisie_Chambre() doit initialiser ltat de la chambre la valeur L , contrler le prix qui doit tre suprieur a 0 tout en ayant une capacit daccueil entre 1 et 4 3. on vous demande de ranger la liste des chambres dans un tableau Tchambre. a. Dveloppez une mthode de saisie de ce tableau b. Ecrire une mthode pour afficher la liste des chambres dune catgorie donne c. Ecrire une methode pour trier le tableau dans lordre croissant des capacits. 4. La liste des chambres est stocke dans un fichier index d. Raliser lapplication de mise a jour de ce fichier qui prend en charge les oprations : dajout, suppression, modification et consultation des chambres. e. Raliser la mthode qui permet de copier toutes les chambres dune catgorie donnes vers un fichier squentiel. f. Remplir le vecteur Vchlib avec toutes les chambres libres. g. Calculer la recette maximale journalire a la recette relle du jour (en fonction du prix en ltat de chaque chambre).

Solution La classe chambre public class chambre { private int numero; private int categorie; private double prix; private char etat;

private int capacite; public chambre(){ } public chambre(int num,int cat,double p){ this.numero=num; this.categorie=cat; this.prix=p; } private String verif(){ String s=null; if(etat=='O'||etat=='o') s="Ocupe"; else { if(etat=='L'||etat=='l') s="Libre"; } return s; } public String Affiche_chambre(){ return "la chambre numero :"+numero+" et de categorie :"+categorie+" prix :"+prix+" capacit :"+capacite+" Son etat :"+verif(); } public int getCapacite() { return capacite; } public void setCapacite(int capacite) { this.capacite = capacite; } public int getCategorie() { return categorie; } public void setCategorie(int categorie) { this.categorie = categorie; } public char getEtat() { return etat; } public void setEtat(char etat) { this.etat = etat; } public int getNumero() { return numero; } public void setNumero(int numero) { this.numero = numero; } public double getPrix() { return prix; } public void setPrix(double prix) {

this.prix = prix; } public String toString(){ return numero+";"+categorie+";"+prix+";"+capacite+";"+etat; } }

La classe fichiers import java.io.*; import java.util.Vector; public class fichiers { private DataOutputStream sortie=null; test_chambre test=new test_chambre(); private DataInputStream entree=null; public chambre t[]=new chambre[test.nbrchambres]; private PrintWriter ouput=null; public static int nbrchambres=0; public boolean ok=false; public void enregistrer(String ligne)throws Exception{ try{ sortie=new DataOutputStream(new FileOutputStream("chambres.dat",true)); String champs[]; champs=ligne.split(";"); sortie.writeInt(Integer.parseInt(champs[0])); sortie.writeInt(Integer.parseInt(champs[1])); sortie.writeDouble(Double.parseDouble(champs[2])); sortie.writeInt(Integer.parseInt(champs[3])); sortie.writeChar(champs[4].charAt(0)); sortie.close(); } catch(Exception e){ } } public void lire ()throws Exception { try{ entree=new DataInputStream(new FileInputStream("chambres.dat")); }catch(FileNotFoundException e){ } while(true){ try{ chambre ch=new chambre(); ch.setNumero(entree.readInt()); ch.setCategorie(entree.readInt()); ch.setPrix(entree.readDouble()); ch.setCapacite(entree.readInt()); ch.setEtat(entree.readChar()); entree.close(); t[nbrchambres]=ch; nbrchambres++;

ok=true; }catch(Exception e){ break; } } } public void update(chambre t[])throws Exception{ String ligne=null; String champs[]; try{ sortie=new DataOutputStream(new FileOutputStream("chambres.dat",false)); }catch(Exception e){ System.err.println("Impossible d'ouvrir le fichier chambres.dat"); } for(int i=0;i<t.length;i++){ try{ ligne=t[i].toString(); champs=ligne.split(";"); sortie.writeInt(Integer.parseInt(champs[0])); sortie.writeInt(Integer.parseInt(champs[1])); sortie.writeDouble(Double.parseDouble(champs[2])); sortie.writeInt(Integer.parseInt(champs[3])); sortie.writeChar(champs[4].charAt(0)); sortie.close(); } catch(Exception e){ } }} public void convertir(chambre t[],int categorie)throws Exception{ String ligne=null; try {ouput=new PrintWriter(new FileWriter("chambres.txt",true)); for(int i=0;i<t.length;i++){ if(categorie==t[i].getCategorie()){ ligne=t[i].toString(); ouput.println(ligne);} } }catch(Exception e){ } } public void consulter(int num)throws Exception{ lire(); try{ for(int i=0;i<t.length;i++){ if(t[i].getNumero()==num) System.out.println(t[i].Affiche_chambre()); else System.out.println("Impossible de trouver la chambre qui porte le numero :"+num); }

}catch(Exception e){ } } public void remplir(chambre tab[]){ Vector v=new Vector(); for(int i=0;i<tab.length;i++){ if(tab[i].getEtat()=='L') { v.add(tab[i]); } } } } La classe de test import java.io.*; import java.util.Vector; public class test_chambre { public static int nbrchambres; private static BufferedReader entree=new BufferedReader(new InputStreamReader(System.in)); public static chambre Tchambre[]=new chambre[nbrchambres]; private static chambre saisie_chambre()throws Exception{ int numero; int categorie; double prix; char etat='L'; int capacite; chambre ch=null; System.out.println("Numro"); numero=Integer.parseInt(entree.readLine()); System.out.println("catgorie"); categorie=Integer.parseInt(entree.readLine()); System.out.println("prix : dois etre superieur a 0"); prix=Double.parseDouble(entree.readLine()); if(prix<=0){ System.out.println("Le prix dois etre superieur a 0"); System.exit(0); } System.out.println("capacit : dois etre entre 1 et 4"); capacite=Integer.parseInt(entree.readLine()); if(capacite<1||capacite>4) { System.out.println("la capacite d'accueil dois etre entre 1 et 4"); System.exit(1); } ch=new chambre(numero,categorie,prix); ch.setCapacite(capacite); ch.setEtat(etat); return ch; }

public static void affichage(int cat,chambre t[]){ chambre ch=null; try {for(int i=0;i<t.length-1;i++){ ch=t[i]; if(ch.getCategorie()==cat) { System.out.println(ch.Affiche_chambre()); } }}catch(Exception e) { } } public static void trier(){ chambre tampon=null,ch=null; try{ for(int i=0;i<Tchambre.length;i++){ for(int j=0;j<i;j++){ ch=Tchambre[i]; if(ch.getCategorie()==Tchambre[j].getCategorie()) { tampon=Tchambre[j]; Tchambre[j]=Tchambre[j+1]; Tchambre[j+1]=tampon; }} }}catch(Exception e){ } try{ for(int i=0;i<Tchambre.length;i++){ System.out.println(Tchambre[i].Affiche_chambre()); }}catch(Exception e){ } } public static void main(String[] args) throws Exception{ System.out.println("l'hotel dispose de combien de chambres?"); nbrchambres=Integer.parseInt(entree.readLine()); fichiers fic=new fichiers(); int i=0,categorie; fic.lire(); if(fic.ok==true){ Tchambre=fic.t; i=fic.nbrchambres; } char rep='o'; while(rep=='o'||rep=='O'){ System.out.println("Que voulez vous faire : choisissez depuis la liste"); System.out.println("1 - Ajouter chambre(s)"); System.out.println("2 - Affichage chambres par categorie");

System.out.println("3 - Trier par categorie"); System.out.println("4 - modifier, supprimer et consulter des chambres a partir du fichier"); System.out.println("5 - Remplir vecteur avec tous les champs libres"); System.out.println("6 - Quitter"); int n=Integer.parseInt(entree.readLine()); switch(n){ case 1:{ char rep1='o'; while(rep1=='O'||rep1=='o'){ Tchambre[i]=saisie_chambre(); fic.enregistrer(Tchambre[i].toString()); i++; System.out.println("Voulez vous effectuer une autre enregistrement O/N"); rep1=entree.readLine().charAt(0); }break; } case 2:{ System.out.println("Entrer la categorie"); categorie=Integer.parseInt(entree.readLine()); affichage(categorie,Tchambre); break; } case 3:{ trier(); break; } case 4:fichiers();break; case 5:fic.remplir(Tchambre);break; case 6: {System.exit(0); System.out.println("Fin du programme "); } default : System.out.println("Svp choisisser a partir de la liste"); } } } private static void fichiers()throws Exception{ System.out.println("\nLa gestion du mise a jour du fichier"); char rep='o'; fichiers fic=new fichiers(); while(rep=='o'||rep=='O'){ System.out.println("Que voulez vous faire"); System.out.println("1 - Supprimer une chambre"); System.out.println("2 - modifier une chambre"); System.out.println("3 - consuler chambre"); System.out.println("4 - Quitter cette categorie"); int n=Integer.parseInt(entree.readLine()); switch(n){ case 1:supp();break; case 2:update();break; case 3:{

System.out.println("Entrer le numero de la chambre que vous voulez consulter"); int num=Integer.parseInt(entree.readLine()); fic.consulter(num); } } System.out.println("voulez vous continur la mise a jour"); rep=entree.readLine().charAt(0); } } private static void supp()throws Exception{ fichiers fic=new fichiers(); chambre ch=new chambre(); chambre t[]=null; int j=0; System.out.println("Entrer le nombre du chambre que vous voulez supprimer"); int num=Integer.parseInt(entree.readLine()); try {for(int i=0;i<Tchambre.length;i++){ if(Tchambre[i].getNumero()!=num){ ch=Tchambre[i]; t[j]=ch; } } }catch(Exception e){ } Tchambre=t; fic.update(Tchambre); } private static void update()throws Exception{ fichiers fic=new fichiers(); chambre ch=new chambre(); chambre t[]=null; int j=0; System.out.println("Entrer le nombre du chambre que vous voulez supprimer"); int num=Integer.parseInt(entree.readLine()); try {for(int i=0;i<Tchambre.length;i++){ if(Tchambre[i].getNumero()!=num){ ch=Tchambre[i]; t[j]=ch; } else { t[j]=saisie_chambre(); } } }catch(Exception e){ } Tchambre=t; fic.update(Tchambre);

} }