You are on page 1of 6

Master 2 BBSG POO, langage Java Laurent Tichit

1. Des exercices simples pour commencer
1.1. L’incontournable « Print "Hello" »
public class Bonjour {

public static void main(String[] args) {
System.out.println("Bonjour");
}
}

Sans commentaire...

1.2. Les arguments de la ligne de commande
public class Calcul {
public static void main(String[] args) {
if (args.length < 3) {
System.out.println("Emploi: java Calcul <nombre> <opérateur>
<nombre>");
return;
}
double x = Double.parseDouble(args[0]);
double y = Double.parseDouble(args[2]);
double z = 0;
switch (args[1].charAt(0)) {
case '+':
z = x + y;
break;
case '-':
z = x - y;
break;
case '*':
z = x * y;
break;
case '/':
z = x / y;
break;
}
System.out.println(x + " " + args[1] + " " + y + " = " + z);
}
}

1.3. Jeux avec les chaînes

public class JeuxDeChaines {

public static void main(String[] args) {
int i = Integer.valueOf(args[0]);
String s1 = args[1];
String s2 = args[2];

/* A */

println("résultat: " + x).contains(s2)).valueOf(i). System.compareTo(s2)).println("Chaine capitalisée '" + s + "'"). /* F */ System.startsWith(s2)).out.endsWith(s2)).println("Chaine nette '" + s + "'"). System.out. else System.println("non").equals(s2) : " + s1. System.out. s = s.println("s1.out.out.compareTo(s2) : " + s1.parseDouble(s) + 1. if (s1.println("oui").println("'" + s1 + "' commence par '" + s2 + "' : " + s1. System.out.print("elles commencent par la meme lettre? ").equals(s2)). s = s1.out.println("résultat: \"" + s + "\"").length() > 0 && s2.compareToIgnoreCase(s2)).println("s1 == s2 : " + (s1 == s2)).trim().out.compareToIgnoreCase(s2) : " + s1. /* G */ System.out.println("'" + s1 + "' finit par '" + s2 + "' : " + s1.out.out. System. /* B */ i = Integer. System. System.println("s1.parseInt(s) + 1.out. String s = String. System.println("s1.indexOf(s2) >= 0)).charAt(0)) System. System. .println("'" + s1 + "' contient '" + s2 + "' : " + (s1.out.out.charAt(0) == s2. /* C */ double x = Double. /* E */ System.out. /* D */ System.out.println("résultat: " + i).length() > 0 && s1.println("'" + s1 + "' contient '" + s2 + "' : " + s1.out.println("Chaine lue '" + s1 + "'").toUpperCase(). System. System.

intern()").println("mais s1 == \"bonjour\" est deja " + (s1 == "bonjour")). } } } 1.println("\non fait s2 = s2.println("s1 sans s2 : '" + s1 + "'"). i < nombre. System.println("Suivez les instructions!").out. sommeCarres += x * x. somme += x.out. else { System.equals("bonjour"))) System. if (i >= 0) s1 = s1.out.println("moyenne " + moyenne + ".equals(s2) est " + s1. } } ./* H */ i = s1.println("\ns1 == s2 est " + (s1 == s2)).intern()").out.equals(s2)).out. System. System. i) + s1.println("s1. double somme = 0.out. System. System. double ecart = Math.equals("bonjour") && s2. System.sqrt(sommeCarres / nombre .random(). System.intern().substring(i + s2. s2 = s2.println("enfin. s1 = s1. System.substring(0. for (int i = 0. double sommeCarres = 0.length()).out. Random public class RandomUn { public static void main(String[] args) { int nombre = 100000.indexOf(s2). même s1 == s2 est " + (s1 == s2)).out.println("s1 == s2 est encore " + (s1 == s2)).intern(). } double moyenne = somme / nombre.println("s1 == \"bonjour\" est " + (s1 == "bonjour")). i++) { double x = Math.println("\non fait s1 = s1.out.out. ecart-type " + ecart).out.moyenne * moyenne).4. /* I */ if ( ! (s1. System.

factPrec2 = fact. . long factPrec1 = 1.multiply(BigInteger.println("Test 2"). } public static void main(String[] args) { System. à défaut d’information plus précise. return result.out. return result. n < 25. System.Pas de commentaire non plus.out. 1.out.Random mais.out. n < 100. factPrec1 = fact.math. n++) { BigInteger fact = factorielle2(n).util.ONE.5. } /* question B */ static BigInteger factorielle2(int n) { BigInteger result = BigInteger.nextDouble() sont les mêmes. } } } La transformation de factorielle1 en factorielle2 se passe de commentaires. Calcul de la factorielle import java. System. while (n > 0) result = result. il faut penser que les algorithmes utilisés par Math.ONE. n++) { long fact = factorielle1(n). for (int n = 1. public class Factorielle { /* question A */ static long factorielle1(int n) { long result = 1.println(" " + n + " ! = " + fact + " (rapport: " + fact / factPrec1 + ")"). while (n > 0) result *= (n--).BigInteger.random() comme une manière simple d’utiliser une instance de la classe plus complète java. BigInteger factPrec2 = BigInteger.valueOf(n--))..random() et unObjetRandom.. } System.println("Test 1"). Affichage obtenu : TTest 1 1 ! = 1 (rapport: 1) 2 ! = 2 (rapport: 2) .divide(factPrec2) + ")").println(" " + n + " ! = " + fact + " (rapport: " + fact. La documentation officielle présente la fonction Math. for (int n = 1.

"octobre". 19 ! = 121645100408832000 (rapport: 19) 20 ! = 2432902008176640000 (rapport: 20) 21 ! = -4249290049419214848 (rapport: -1) 22 ! = -1250660718674968576 (rapport: 0) . le " + jour[c. "mars".out. "juin".println("maintenant: " + f.getInstance().out. "février".get(Calendar.MINUTE) + ".HOUR) + " heures " + c. import java. "août".. String[] mois = { "janvier".get(Calendar. Quel jour sommes-nous ? quelle heure est-il ? import java. "Lundi". System. Test 2 1 ! = 1 (rapport: 1) 2 ! = 2 (rapport: 2) .currentTimeMillis() / 1000. "Mardi". "Samedi" }.println("maintenant: " + f. "décembre" }.DAY_OF_WEEK)] + " " + c.format(d)). } } . "mai".get(Calendar.text.out. "Dimanche".6. "Jeudi".get(Calendar. "septembre". System.println("maintenant: " + t + " secondes depuis le 1/01/1970").YEAR)). 98 ! = 942689044888324774562618574305724247380969376407895166349423877729470707002 322379888297615920772911982360585058860846042941264756736000000000000000000 0000 (rapport: 98) 99 ! = 933262154439441526816992388562667004907159682643816214685929638952175999932 299156089414639761565182862536979208272237582511852109168640000000000000000 000000 (rapport: 99) 1.. "avril".println("maintenant: " + d).out.get(Calendar.format(d)). System.out. "juillet"..*. // deuxième manière Date d = new Date(). // troisième manière String[] jour = { null. "novembre"..util. Calendar c = Calendar.*. System.DAY_OF_MONTH) + " " + mois[c.MONTH)] + " " + c. f = new SimpleDateFormat("dd MMMMM yyyy HH:mm").get(Calendar. public class DateCourante { public static void main(String[] args) { // première manière long t = System. // quatrième manière (deux exemples) DateFormat f = new SimpleDateFormat(). "Mercredi". "Vendredi".println("maintenant: " + c. System.

1.nextFloat(). mais la plus laborieuse.nextFloat().println("moyenne: " + somme / nombre).out.in).Scanner. System. Une qualité de la quatrième manière est qu’elle intègre les particularités locales. Peu utile en Java. par défaut. } } Simplement pour connaître l'équivalent de la fonction python input() . car les entrées sont passées soit par args .out. } System. float somme = 0. x = entree. public class TestScanner { public static void main(String[] args) { Scanner entree = new Scanner(System. while (x >= 0) { somme += x. .7.A l’exécution on obtient : maintenant: 1100428319 secondes depuis le 1/01/1970 maintenant: Sun Nov 14 11:31:59 CET 2004 maintenant: 11 heures 31. int nombre = 0. Ainsi.util. on obtient 14/11/04 11:31. nombre++. le Dimanche 14 novembre 2004 maintenant: 14/11/04 11:31 maintenant: 14 novembre 2004 11:31 La troisième manière est la plus souple. soit grâce à une interface graphique. float x = entree. l’affichage court « à la française ». Lectures simples au clavier : la classe Scanner import java.print("Donner les nombres (terminer par -1): ").