Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Saisissez, compilez et excutez un programme Java qui affiche Bonjour tous ! sur lcran de la console.
crivez une classe publique excutable nomme Bonjour place dans un fichier nomm
Bonjour.java.
1. Une classe est excutable si et seulement si elle comporte une mthode ayant exactement la
signature public static void main(String[] args)
2. On provoque une compilation en donnant un nom de fichier (ex.: javac Bonjour.java)
3. On lance lexcution dun programme en donnant un nom de classe (ex.: java Bonjour).
Observez ce qui se passe lorsque vous dsobissez une des trois prescriptions prcdentes.
Au cours du semestre, rdigez un carnet des erreurs Java en deux parties : les erreurs la compilation et
les erreurs l'excution.
Dans sa forme gnrale, la commande qui dclenche l'excution d'une application Java s'crit
o chane0 chane0 ... chanek1 sont des chanes de caractres ne contenant pas de blancs spares par
des blancs (espaces, tabulations).
Ces chanes sont accessibles depuis lintrieur de lapplication travers le tableau, gnralement appel
args, qui est dclar dans len-tte de la fonction main. Par exemple, si une application est lance par la
commande
alors la fonction main reoit un argument qui est un tableau form des quatre chanes de caractres
"Dupond", "Jean Pierre", "2006" et "2+3=5". Notez que :
quand un argument contient des blancs (Jean Pierre) on doit lencadrer par des guillemets,
les nombres ne sont pas reconnus en tant que tels, mais en tant que chanes de caractres,
les seuls sparateurs reconnus ce niveau sont lespace et la tabulation ; par exemple, 2+3=5
forme un seul argument.
Exercice. crivez une classe Calcul quon excute avec trois arguments : deux nombres et un oprateur
entre les deux, et qui affiche le rsultat de lopration indique sur les nombres indiqus. Exemple
dexcution (ce qui est saisi par lutilisateur est bleu) :
But de cet exercice : vous faire explorer la classe java.lang.String en testant ses diverses
mthodes sur des chanes et dautres valeurs lues au clavier.
Un des buts de cet exercice est justement de vous initier la consultation de cette
documentation. Pour cela, ouvrez un navigateur sur la doc de lAPI (chez Sun,
http://docs.oracle.com/javase/7/docs/api/) ; dans le volet gauche suprieur slectionnez le
paquetage java.lang et, alors, dans le volet gauche infrieur slectionnez la classe
String.
Il sagit d'crire une classe excutable TestChaines dont la mthode principale effectue les oprations
suivantes :
A. Crez une variable de type int, affectez-lui une valeur, puis convertissez cette variable en chane (ex.:
le nombre 12345 devient la chane "12345").
B. Sur la ligne de commande, lire une chane entirement compose de chiffres et la convertir dans le
nombre entier quelle reprsente (ex.: la chane "12345" devient le nombre 12345). La solution se
trouve parmi les mthodes statiques de la classe java.lang.Integer.
C. Mme question que ci-dessus, mais avec un nombre flottant (ex.: la chane "0.12345e4" devient le
nombre 0.12345e4).
D. Lire une chane reprsentant un nom de ville, lui enlever les ventuels blancs au dbut et la fin et
lafficher entirement en majuscules.
E. Lire deux chanes s1 et s2 et afficher la rponse la question : ces deux chanes commencent-elles par
le mme caractre ? Utilisez la mthode dinstance charAt.
F. Lire deux chanes s1 et s2 et afficher les rsultats renvoys par les expressions s1 == s2 ,
s1.equals(s2) , s1.compareTo(s2) et , s1.compareToIgnoreCase(s2) . Entre autres,
essayer les couples "abcd" et "abcd", puis "abcd" et "AbcD".
I. Si s est une chane de caractres, lexpression s.intern() renvoie une chane ayant les mmes
caractres que s mais appartenant une collection de chanes sans doublons que Java maintient et dont les
chanes figurant dans le programme source font partie doffice.
1.4. Random
Pour produire des nombres alatoires utilisez la mthode java.lang.Math.random() (cela se lit :
la mthode random de la classe Math du paquetage java.lang ), sur laquelle vous trouverez des
indications dans la documentation de l'API.
Un des buts de cet exercice est justement de vous initier la consultation de cette
documentation. Pour cela, ouvrez un navigateur sur la doc de lAPI (chez Sun,
http://docs.oracle.com/javase/7/docs/api/) ; dans le volet gauche suprieur slectionnez le
paquetage java.lang et, alors, dans le volet gauche infrieur slectionnez la classe Math.
Parmi les mthodes de cette classe, cherchez random et lisez-en la documentation.
Rappel de formules : si n est le nombre de termes dune suite, S = x1 + x2 + ... + xn la somme de ces termes
et Q = x12 + x22 + ... + xn2 la somme de leurs carrs, alors
la moyenne est m = S / n
lcart-type s est la racine carre de la variance V, donne par V = ( Q / n ) m2
N.B. Si la distribution des valeurs renvoyes par la fonction random est uniforme, quand n devient
de plus en plus grand m doit tendre vers 0,5 et s vers 0,288675134595 (la racine carre de 1/12).
B. Trouvez la valeur de n partir de laquelle les dbordements des valeurs entires rendent cette mthode
inutilisable.
N.B. Une manire de vrifier que la valeur de n! est juste, sachant que celle de (n 1)! lest, consiste
afficher le rapport n! / (n 1)!
C. Pour pallier ce problme de dbordement, crivez une nouvelle fonction utilisant des objets
java.math.BigInteger :
et constatez que maintenant on peut aller pratiquement aussi loin quon veut. Pour rsoudre cet exercice
vous aurez besoin de lire posment la documentation de cette classe.
But de cet exercice : essayer diverses manires dobtenir et afficher la date courante (encore un prtexte
pour vous faire chercher dans la documentation...).
crivez un programme qui affiche le nombre de secondes coules depuis le 1 er janvier 1970. Excutez
deux fois ce programme, une minute dintervalle, et voyez si les valeurs obtenues correspondent peu
prs lexplication.
B. Deuxime manire : ajoutez au programme prcdent des instructions qui crent un objet de type
java.util.Date (par une expression comme Date d = new Date(); ) et le donnent
afficher System.out. Comme vous le voyez, cest mieux, car on obtient bien une date, mais crite
la manire des anglo-saxophones.
Ne cherchez pas la correction de ce dfaut parmi les nombreuses mthodes de la classe Date, elles sont
presque toutes deprecated (obsoltes, dsapprouves) et ne mritent pas quon sy investisse.
C. Troisime manire : crer un objet de type java.util.Calendar (par une expression comme
Calendar c = Calendar.getInstance(); ) et obtenir sparment les lments de la date
(le jour de la semaine, le jour du mois, le mois, lanne) pour les afficher comme bon nous semble.
En tudiant la documentation de la classe Calendar vous dcouvrirez quon obtient les divers
composants par des expressions de la forme c.get(Calendar.MONTH); ,
c.get(Calendar.YEAR); , etc.
Des tableaux de chanes dclars comme ceci peuvent vous aider obtenir une prsentation adquate :
D. Quatrime manire (la plus pro ) : construire un objet d de type java.util.Date comme dans
la deuxime manire et un objet f de type java.text.SimpleDateFormat (qui est une varit de
java.text.DateFormat) et afficher le rsultat du formatage du premier par le second, par une
expression comme f.format(d).
Ne vous laissez pas effrayer par la documentation de SimpleDateFormat. Si vous ne voyez pas
comment cela marche, essayez ceci et vous comprendrez :
...
Date d = new Date();
SimpleDateFormat f = new SimpleDateFormat("dd MMMMM yyyy HH:mm");
System.out.println("maintenant: " + f.format(d));
...