ENPC - Objets et Patterns - Corrigés des exercices de la séance 2

Affichage des carrés des n premiers carrés en utilisant une méthode statique

public class Exercice1 {
  public static void premiersCarres(int n) {
    for(int i=1; i<=n; i++) {
      System.out.println(i + " au carré vaut : " + i*i);
    }
  }

  public static void main(String[] args) {
    /* Ici, si l'utilisateur n'entre aucune valeur sur la ligne de
       commande, on considère que n vaut 10. Sinon, on utilise pour n
       la valeur qu'il a entré sur la ligne de commande.
       Par défaut, n vaut donc 10, et on ne le modifie que si nécessaire.
    */
    int n = 10;
    if (args.length != 0) {
      n = Integer.parseInt(args[0]);
    }
    premiersCarres(n);
  }
}

Déclaration et définition d'un tableau; méthode d'initialisation et d'affichage

public class Exercice2 {
  /*
    Cette méthode initialise les éléments du tableau tab
    au carré de leur indice.
  */
  public static void initCarreIndice(int[] tab) {
    for(int i=0; i<tab.length; i++) {
      tab[i] = i*i;
    }
  }

  /*
    Cette méthode affiche sur la sortie standard (System.out) les valeurs
    des éléments du tableau.
  */
  public static void affiche(int[] tab) {
    for(int i=0; i<tab.length; i++) {
      // Ici, on affiche les valeurs sur la même ligne
      // en les séparant par un blanc
      System.out.print(tab[i] + " ");
    }
  }

  public static void main(String[] args) {
    // Définition d'un tableau de 10 entiers
    int t[] = new int[10];

    // Affichage de ce tableau avant initialisation
    System.out.println("Avant initialisation:");
    affiche(t);

    // Initialisation des éléments du tableau au carré de leur indice
    initCarreIndice(t);
    
    // Affichage du tableau après cette initialisation
    // Remarque: le caractère '\n' est interprété comme un retour à la ligne
    System.out.println("\nAprès initialisation:");
    affiche(t);
  }
}

Méthode de tri d'un tableau d'entier

  public static void trier(int[] tab) {
    int aux;
    for(int i=tab.length-1; i>1; i--) {
      for(int j=0; j<i; j++) {
	if(tab[j] > tab[i]) {
	  aux = tab[j];
	  tab[j] = tab[i];
	  tab[i] = aux;
	}
      }
    }
  }

Tri d'une liste de valeurs entières entrées sur la ligne de commande

  public static void main(String[] args) {
    int[] t = new int[args.length];
    for(int i=0; i<args.length; i++) {
      t[i] = Integer.parseInt(args[i]);
    }
    trier(t);
    affiche(t);   
  }

Méthode de tri d'un tableau de chaînes de caractères (String)

Ici, on dispose de deux méthodes trier qui ont le même nom mais des paramètres différents (l'une de type tableau d'entiers et l'autre de type tableau de String): on dit qu'on a surcharge de méthode. C'est le compilateur qui décide, en fonction de l'argument que l'on passe à la méthode lors de l'appel, de quelle méthode il s'agit.

  public static void trier(String[] tab) {
    String aux;
    for(int i=tab.length-1; i>1; i--) {
      for(int j=0; j<i; j++) {
	if(tab[j].compareTo(tab[i]) > 0) {
	  aux = tab[j];
	  tab[j] = tab[i];
	  tab[i] = aux;
	}
      }
    }
  }

Etienne.Duris[at]univ-mlv.fr - © École Nationale des Ponts et Chaussées - Octobre 2000 - http://www-igm.univ-mlv.fr/~duris/ENPC/index2000.html