ED n°2 corrigé Exercices dirigés n°2 - corrigé Etant donné une chaîne de caractères quelconque, écrire une première fonction qui retourne sa longueur. Ecrire une seconde fonction qui retourne la longueur d'une chaîne après l'avoir transformée en un tableau. Solution int longueur( String chaine){ return chaine.length();} int longueur( String chaine){ String s = chaine.toCharArray(); return s.length; } Ecrire une fonction qui retourne la chaîne résultant de la concaténation de deux chaînes, la plus à gauche précédant la plus à droite selon l'ordre lexicographique. Exemple : concaténer ‟Kurt‟ et ‟Elling‟ => ‟EllingKurt‟ Solution String concat(String s1, String s2){ return s1.compareTo(s2)<=0 ? s1+s2:s2+s1; } Ecrire une fonction qui teste l'égalité de 2 tableaux d'entiers Solution static boolean estEgal ( int[ ] ti1, int[ ] ti2 ) { if ( ti1.length != ti2.length ) { return false ; }else{ / / ti1.length == ti2.length for( int i = 0 ; i < ti1.length ; i++ ) { if ( ti1[ i ] != ti2[ i ] ) { return false ; } } } return true ; } Exécuter le programme suivant : class Compteur { int x ; Compteur ( int n ) { x = n ; } Compteur incremente ( ) { x++ ; 1 ED n°2 corrigé } return this; // this contient la référence du récepteur du message } int getValeur ( ) { return x ; } class Exo12_4 { public static void main ( String [ ] argv ) { Compteur c1 , c2 , c3 ; c1 = new Compteur ( 0 ) ; c1.incremente ( ) ; c2 = new Compteur ( 1 ) ; c3 = c1 ; if ( c1 == c3 ) { System.out.println( " c1 et c3 sont égaux " ) ; } else { System.out.println( " c1 et c3 ne sont pas égaux " ) ; } if ( c1.getValeur( ) == c2.getValeur ( ) ) { System.out.println( " c1 et c2 ont même valeur " ) ; } else { System.out.println( " c1 et c2 n’ont pas la même valeur " ) ; } if ( c1 == c2 ) { System.out.println( " c1 et c2 sont égaux " ) ; } else { System.out.println( " c1 et c2 ne sont pas égaux " ) ; } if ( c1.getValeur( ) == c1.incremente( ).getValeur( ) ) { System.out.println( " c1 et c1 incremente ont même valeur " ) ; } else { System.out.println("c1 et c1.incremente n’ont pas la même valeur "); } if ( c1 == c1.incremente( ) ) { System.out.println( " c1 et c1 incremente sont égaux " ) ; } else { System.out.println( " c1 et c1 incremente ne sont pas égaux " ) ; } } } Solution c1 c1 c1 c1 c1 et et et et et c3 c2 c2 c1 c1 sont égaux ont même valeur ne sont pas égaux incremente n’ont pas la même valeur incremente sont égaux Spécification et documentation (format javadoc) de l'interface Java SMSEdit d'un éditeur de SMS. La longueur maximale du texte est de 194 caractères. Les fonctionnalités de cet éditeur simple sont : 2 ED n°2 corrigé – – – ajouter un caractère au texte rédigé effacer le dernier caractère ajouté enregistrer le texte dans un fichier connu par son nom Solution interface SMSEdit{ /** * MAX taille maximale du message SMS / static final int MAX = 194; /** * Ajout d'un caractère au message en édition * @param c le caractère à ajouter * @param texte le message en cours d'édition * @return le nouveau message */ String ajouter(char c, String texte); /** * Effacement du dernier caractère édité * @param texte le message en cours d'édition * @return le nouveau message */ String effacer(String texte); /** * Enregistrement du texte édité * @param texte le message édité * @param fichier nom du fichier de sauvegarde */ void effacer(String texte, String fichier); Ecrire 3 petits programmes pour saisir vos nom, prénom et afficher ces informations sous la forme : nom : votre nom prénom : votre prénom Le premier programme se contentera d'afficher le résultat sur un terminal Le second programme affichera le résultat dans une fenêtre de dialogue Le dernier programme sera créé sous la forme d'une applet Solution // résultat sur terminal => Identite.java import java.util.Scanner; public class Identite{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.print("Nom : "); String nom = in.next(); System.out.print("Prénom : "); String prenom = in.next(); 3 ED n°2 corrigé } } System.out.println("Nom : "+nom); System.out.println("Prénom : "+prenom); // interface graphique => Identite.java import javax.swing.JOptionPane; public class Identite{ } public static void main(String[] args){ nom = JOptionPane.showInputDialog("Votre nom"); prenom = JOptionPane.showInputDialog("Votre prénom"); JoptionPane.showMessageDialog(null, "nom : "+nom+"\n, prénom : " +prenom , "Identité"); } // résultat sur l'applet => identite.html <html> <head> applet Identité</head> <body> <applet code = "Identite.class" width = 200 height = 300> </applet> </body> </html> // résultat sur l'applet => Identite.java import java.awt.*; import javax.swing.*; public class Identite extends Japplet{ String nom=null,prenom=null,annee=null; public void init(){ nom = JOptionPane.showInputDialog("Votre nom"); prenom = JOptionPane.showInputDialog("Votre prénom"); } public void paint(Graphics g){ super.paint(g); g.drawString("nom : "+nom+"\nprénom : "+prenom,25,25 ); } } public void start(){} public void stop(){} public void destroy(){} 4