Cours L3 Java Package CHAP 2
Cours L3 Java Package CHAP 2
1.1. Création des paquets Java propose l'utilitaire jar dans le JDK, un utilitaire
permettant de rassembler les différentes classes
La création d'un paquet se fait en deux étapes : la (fichiers .class) d'une application au sein d'une archive
première consiste à déterminer dans chaque fichier , à compressée, appelé package, afin d'en assurer
quel package il appartient. La seconde place les l'intégrité et la taille. La syntaxe de jar est proche de
fichiers de bytecode générée à une position bien celle de tar sous Unix .
précise de l'arborescence de fichiers de votre support Pour créer une archive java, il suffit d’exécuter la
de stockage ( disque dur ou autre) commande « jar cf nom_archive liste_des_fichiers »
Pour créer un paquet , il suffit d'ajouter sur la où les différents fichiers de la liste sont séparés par
des espaces. L’option « c » spécifie que l’on souhaite
premiere ligne le mot clé package suivi du nom de
créer une archive et « f » permet d’envoyer le flux dans
paquet auquel le fichier le fichier appartient et d'un l’archive dont le nom est spécifié. L’option « v », pour
point virgule. verbosité, permet de suivre l’évolution de la création de
l’archive. Par exemple, jar cvf MonArchive.jar *.class
package java.shape2D ; Pour extraire le contenu d’une archive java
// pour créer un paquet java.shape2D (décompresser) , il suffit d’exécuter la commande «jar
// Placer les fichiers d'un package xf nom_archive [liste__fichiers_à_extraire] ».
Par exemple, jar xvf MonArchive.jar *.class
Si vous ne spéficiez pas de package , le fichier
appartient à un paquet par défaut qui est le répertoire 1.3. Le classpath
courant dans lequel doivent se trouver les fichiers de
bytecode. A l'exécution, la JVM et les outils du JDK recherchent
les classes requises dans :
Par exemple, pour créer un paquet appelé monpaquet,
il suffit d'utiliser une instruction package au début du • Les classes de la plate-forme Java (stockées
fichier : dans le fichier rt.jar)
• Les classes d'extension de la plate-forme Java
package monpaquet; • Le classpath
public class MaClasse {
……………….. Le classpath permet de préciser au compilateur et à la
} JVM où ils peuvent trouver les classes dont ils ont
besoin pour la compilation et l'exécution d'une
} // fin classe application. C'est un ensemble de chemins vers des
répertoires ou des fichiers .jar dans lequel
ENI 1
l'environnement d'exécution Java recherche les ProjetJava
classes (celles de l'application mais aussi celles de
tiers) et éventuellement des fichiers de ressources
utiles à l'exécution de l'application. Ces classes ne rep1
concernent pas celles fournies par l'environnement maclasse1.class
d'exécution incluses dans le fichier rt.jar qui est
implicitement utilisé par l'environnement.
rep2 rep3 rep5
Le classpath est constitué de chemins vers des maclasse2 maclasse3 maclasse5
répertoires et/ou des archives sous la forme de
fichiers .jar ou .zip. Chaque élément du classpath peut
donc être : rep4
maclasse4
• Pour des fichiers .class : le répertoire qui
contient l'arborescence des sous répertoires
des packages ou les fichiers .class (si ceux-ci //maclasse1
sont dans le package par défaut) package rep1 ;
• Pour des fichiers .jar ou .zip : le chemin vers public class maclasse1 {
chacun des fichiers String nom ;
// constructeur
public void setNom( String nom)
Les éléments du classpath qui ne sont pas des
{ this.nom = nom ;}
répertoires ou des fichiers .jar ou .zip sont ignorés.
…………
} // fin classe
Ces chemins peuvent être absolus ou relatifs. Chaque
chemin est séparé par un caractère spécifique au // maclasse4
système d'exploitation utilisé : point virgule sous package rep1.rep3.rep4 ;
Windows et deux points sous Unix par exemple. public class maclasse4 {
…………
}
Exemple sous Windows :
ENI 2
Paquet Description que si obj1 et obj2 désignent le même objet. Dans une
Langage Noyau principal du langage Java sous classe de Object, pour laquelle on a besoin de
Utilitaires Prise en charge des structures de pouvoir dire que deux objets distincts peuvent être
données utilitaires égaux, il faut redéfinir la méthode equals() héritée de
E/S Prise en charge de divers types Object.
d'entrée/sortie
Réseau Prise en charge de TCP/IP et 1.1.3. La classe String
programmation des sockets
AWT Conception GUI et gestion des Une chaîne de caractères est contenue dans un objet
événements de la classe String
Texte Prise en charge de
l'internationalisation On peut initialiser une variable String sans appeler
explicitement un constructeur : le compilateur se
Sécurité Prise en charge de la sécurité par
charge de créer un objet.
cryptographie
RMI Prise en charge de la
programmation distribuée Exemple : deux déclarations de chaines
SQL Prise en charge de l'interrogation identiques.
des bases de données avec SQL
String uneChaine = "bonjour";
Pour importer un paquet , il suffit d'utiliser l'instruction String uneChaine = new String("bonjour");
import nompaquet ;
Les objets de cette classe ont la particularité d'être
constants. Chaque traitement qui vise à transformer un
Par exemple, objet de la classe est implémenté par une méthode qui
import monpaquet.*; // importer toutes les classes du laisse l'objet d'origine inchangé et renvoie un nouvel
paquet objet String contenant les modifications.
import monpaquet.Bonjour; // importer la classe
Bonjour
import java.awt.Button ; // on importe la classe Button Exemple :
Cette méthode utilise les données de l'instance de Les méthodes de conversion opèrent sur des
l'objet, il est donc nécessaire de vérifier que cette instances, mais il est possible d'utiliser des méthodes
instance n'est pas null pour éviter la levée d'une statiques.
exception de type NullPointerException.
Exemple :
Exemple :
int valeur =
package com.jmdoudoux.test.java6; Integer.valueOf("999").intValue();
Cette classe possède de nombreuses fonctionnalités public static void main(String[] args) {
pour utiliser des services du système d'exploitation. System.out.printf("%d \n" ,13);
System.out.printf("%4d \n" ,13);
1.1.7.1. L'utilisation des flux d'entrée/sortie System.out.printf("%04d \n" ,13);
standard System.out.printf("%f \n" ,3.14116);
System.out.printf("%.2f \n" ,3.14116);
La classe System défini trois variables statiques qui System.out.printf("%s \n" ,"Test");
permettent d'utiliser les flux d'entrée/sortie standards System.out.printf("%10s \n" ,"Test");
du système d'exploitation. System.out.printf("%-10s \n" ,"Test");
System.out.printf("%tD \n" , new Date());
System.out.printf("%tF \n" , new Date());
Variable Type Rôle System.out.printf("%1$te %1$tb %1$ty \n" , new
Date());
Entrée standard du système. System.out.printf("%1$tA %1$te %1$tB %1$tY \n", new
In PrintStream
Par défaut, c'est le clavier. Date());
System.out.printf("%1$tr \n" , new Date());
Sortie standard du système.
Out InputStream }
Par défaut, c'est le moniteur.
ENI 6
Nom de la propriété Rôle System.out.println("java.home
="+System.getProperty("java.home"));
java.version Version du JRE System.out.println("java.vm.specification.version ="
+System.getProperty("java.vm.specification.versio
java.vendor Auteur du JRE n"));
System.out.println("java.vm.specification.vendor ="
java.vendor.url URL de l'auteur +System.getProperty("java.vm.specification.vendo
Répertoire d'installation de r"));
java.home System.out.println("java.vm.specification.name ="
java
+System.getProperty("java.vm.specification.name"
Version de l'implémentation la ));
java.vm.version System.out.println("java.vm.version
JVM
="+System.getProperty("java.vm.version"));
Auteur de l'implémentation de System.out.println("java.vm.vendor
java.vm.vendor
la JVM ="+System.getProperty("java.vm.vendor"));
System.out.println("java.vm.name
Nom de l'implémentation de la ="+System.getProperty("java.vm.name"));
java.vm.name
JVM System.out.println("java.specification.version ="
Version des spécifications de +System.getProperty("java.specification.version"))
java.specification.version ;
la JVM
System.out.println("java.specification.vendor ="
Auteur des spécifications de la +System.getProperty("java.specification.vendor"));
java.specification.vendor System.out.println("java.specification.name ="
JVM
+System.getProperty("java.specification.name"));
Nom des spécifications de la System.out.println("java.class.version ="
java.specification.name
JVM +System.getProperty("java.class.version"));
System.out.println("java.class.path ="
Chemin du ou des répertoires +System.getProperty("java.class.path"));
java.ext.dirs
d'extension System.out.println("java.ext.dirs
os.name Nom du système d'exploitation ="+System.getProperty("java.ext.dirs"));
System.out.println("os.name
Architecture du système ="+System.getProperty("os.name"));
os.arch System.out.println("os.arch
d'exploitation
="+System.getProperty("os.arch"));
Version du système System.out.println("os.version
os.version
d'exploitation ="+System.getProperty("os.version"));
System.out.println("file.separator
Séparateur de fichiers ="+System.getProperty("file.separator"));
file.separator (exemple : "/" sous Unix, "\" System.out.println("path.separator
sous Windows) ="+System.getProperty("path.separator"));
Séparateur de chemin System.out.println("line.separator
path.separator (exemple : ":" sous Unix, ";" ="+System.getProperty("line.separator"));
sous Windows) System.out.println("user.name
="+System.getProperty("user.name"));
line.separator Séparateur de ligne System.out.println("user.home
="+System.getProperty("user.home"));
user.name Nom du user courant System.out.println("user.dir
="+System.getProperty("user.dir"));
Répertoire d'accueil du user }
user.home
courant }
Répertoire courant au moment
user.dir Par défaut, l'accès aux propriétés système est restreint
de l'initialisation de la propriété
par le SecurityManager pour les applets.
public static void main(String[] args) { La méthode statique getProperty() permet d'obtenir la
System.out.println("java.version valeur de la propriété dont le nom est fourni en
="+System.getProperty("java.version")); paramètre. Une version surchargée de cette méthode
System.out.println("java.vendor permet de préciser un second paramètre qui
="+System.getProperty("java.vendor")); contiendra la valeur par défaut, si la propriété n'est pas
System.out.println("java.vendor.url définie.
="+System.getProperty("java.vendor.url"));
ENI 7
1.2. Les classes Runtime et Process
Exemple : obtenir une variable système (java 1.1,
1., 1.3 et 1.4)
La classe Runtime permet d'interagir avec le système
package com.jmd.test; dans lequel l'application s'exécute : obtenir des
informations sur le système, arrêt de la machine
public class TestPropertyEnv { virtuelle, exéecution d'un programme externe.
Méthode Remarque
Exemple (Java 5) :
Process exec(String command)
package com.jmd.tests;
Process exec(String[] cmdarray)
import java.util.Iterator;
import java.util.Map; Process exec(String[] cmdarray,
import java.util.Set; String[] envp)
ENI 9
long duree= System.currentTimeMillis() – start ;
Start Excel System.out.println(duree);
import java.io.IOException;
class StartExcel {
public static void main(String args[]) 2. Le package java.util
throws IOException
{
Runtime.getRuntime().exec("cmd /c start Ce package contient un ensemble de classes utilitaires
excel.exe"); : la gestion des dates (Date et Calendar), la génération
} de nombres aléatoires (Random), la gestion des
} collections ordonnées ou non tel que la table de
hachage (HashTable), le vecteur (Vector), la pile
(Stack) ..., la gestion des propriétés (Properties), des
Pour charger une feuille
classes dédiées à l'internationalisation
(ResourceBundle, PropertyResourceBundle,
import java.io.IOException; ListResourceBundle) etc ...
class StartExcel {
Certaines de ces classes sont présentées plus en
public static void main(String args[])
détail dans les sections suivantes.
throws IOException
{
String fileName = "c:\\temp\\xls\\test2.xls"; 2.1. La classe StringTokenizer
String[] commands = {"cmd", "/c", "start",
"\"DummyTitle\"",fileName}; Cette classe permet de découper une chaîne de
Runtime.getRuntime().exec(commands); caractères (objet de type String) en fonction de
} séparateurs. Le constructeur de la classe accepte 2
} paramètres : la chaîne à décomposer et une chaîne
contenant les séparateurs.
It's important to pass a dummy title to the Windows
start command where there is a possibility that the StringTokenizer(String str, [String delim]) :
filename contains a space. construit un ensemble de tokens en utilisant comme
délimiteurs les caractères de la chaîne delim
class test9 {
1.3. Détermination du temps écoulé entre deus
public static void main(String args[]) {
points d’un programme StringTokenizer st = new
StringTokenizer("chaine1,chaine2,chaine3,
- System.currentTimeMillis() chaine4"
,",");
En utilisant la méthode statique currentTimeMillis() de while (st.hasMoreTokens()) {
la classe System. Cette méthode renvoie un long System.out.println((st.nextToken()).toString());
}
représentant la différence de temps entre le 1er janvier
}
1970 à minuit et le temps système à l’exécution de }
l’instruction. Cette différence s’exprime en fonction de
l’unité de temps de l’OS (la milliseconde, voire C:\java>java test9
quelques dizaines de milliseconde). chaine1
long start= System.currentTimeMillis() ; chaine2
chaine3
// … instructions à chronométrer
chaine4
ENI 10
if (maintenant.getDay() == 1)
System.out.println(" lundi ");
2.2. La classe Random Le constructeur d'un objet Date l'initialise avec la date
et l'heure courante du système.
La classe Random permet de générer des nombres Exemple 2 :
pseudo-aléatoires. Après l'appel au constructeur, il import java.util.*;
suffit d'appeler la méthode correspondant au type import java.text.*;
désiré : nextInt(), nextLong(), nextFloat() ou
nextDouble() public class TestHeure {
public static void main(java.lang.String[] args) {
Date date = new Date();
Méthodes valeur de retour System.out.println(DateFormat.getTimeInstance
().
entre Integer.MIN_VALUE et format(date));
nextInt()
Interger.MAX_VALUE }
}
entre long.MIN_VALUE et
nextLong()
long.MAX_VALUE
nextFloat() ou
entre 0.0 et 1.0
nextDouble()
Résultat :
Exemple ( code Java 1.1 ) : 22:05:21
import java.util.*;
class test9 { Exemple 3 : L'exemple ci-dessous met en oeuvre un
public static void main (String args[]) { certain nombre de ce méthodes. On demande à
Random r = new Random(); l'utilisateur d'entrer sa date de naissance et on retourne
int a = r.nextInt(10); //entier entre -9 et 9 son age.
System.out.println("a = "+a);
} import java.applet.*;
} import java.awt.*;
import java.util.*; //importation du package
2.3. Les classes Date et Calendar public class date10 extends Applet
{ int jour=15,mois=8,annee=70; //valeurs initiales
En Java 1.0, la classe Date permet de manipuler les Font font = new Font("Helvetica",0,12);
Label lb1,lb2,lb3;
dates. la classe Date permet de manipuler les dates.
TextField tf1=new TextField(""+jour,2);
Le constructeur de cette classe peut prendre les TextField tf2=new TextField(""+(mois-1),2);
formes Date( ), Date(long date), Date(int year, int TextField tf3=new TextField(""+annee,2);
month, int date), Date(int year, int month, int date, Date D = new Date(); //date actuelle du client
int hrs, int min), Date(int year, int month, int date, String s;
int hrs, int min, int sec) et Date(String s). Dans ce public void init()
{ setBackground(Color.lightGray);
dernier cas, la chaîne est de la forme "day, date month
setFont(font);
year hrs:min:sec GMT" dans laquelle day est le nom du lb1=new Label("Jour",2);
jour sous la forme Mon, Tue, Wed, Thu, Fri, Sat ou add(lb1); add(tf1);
Sun. lb2=new Label("Mois",2);
add(lb2); add(tf2);
Les méthodes les plus utiles sont getTime( ) qui lb3=new Label("Année",2);
retourne un long correspond au nombre de add(lb3); add(tf3);}
public boolean action(Event evt, Object arg)
millisecondes écoulées entre le 1-01-1970 et la date
{ if (evt.target==tf1) {
utilisée, getDate( ) qui retourne un int s=tf1.getText(); jour=Integer.parseInt(s);}
correspondant à la date du jour, getDay( ) qui else if (evt.target==tf2) {
retourne le jour, getMonth( ), getYear( ), s=tf2.getText();mois=Integer.parseInt(s)-1;}//0 à
getHours( ), getMinutes( ). 11 !!!
else if (evt.target==tf3){
s=tf3.getText(); annee=Integer.parseInt(s);}
Exemple 1 : else return super.action(evt,arg);
repaint(); return true;}
import java.util.*; public void paint(Graphics g)
... { g.drawString("Nous sommes le : "+D,20,50);
Date maintenant = new Date(); g.drawString("Entrer votre date de
naissance :",20,70);
ENI 11
Date Dnai = new Date(annee,mois,jour); Calendar.SATURDAY)
g.drawString("né(e) le : "+Dnai.toString(),20,90); System.out.println(" nous sommes samedi ");
Date Dage = new Date((long)(D.getTime()- if (c.get(Calendar.DAY_OF_WEEK) ==
Dnai.getTime())); Calendar.SUNDAY)
s = "Vous avez "+(Dage.getYear()-70)+" ans, "; System.out.println(" nous sommes dimanche ");
//origine 1970
s = s+Dage.getMonth()+" mois et "; }
s = s+(Dage.getDate()-1)+" jours."; }
g.drawString(s,20,110);
g.drawString(""+D.getTime()+" ms écoulées Résultat :
depuis le 01/01/1970 minuit",20,130);
} nous sommes lundi
Exemple 2 : /* 3. Affichage */
System.out.println(dateFormat.format(maDate));
import java.util.*;
Si vous souhaitez utiliser un format de sortie plus
public class TestCalendar { exotique, vous pouvez accéder directement à la
public static void main(java.lang.String[] args) { classe java.text.SimpleDateFormat.
public static void main(String[] args) { La classe DataFormat propose plusieurs méthodes
pour obtenir le modèle par défaut de la Locale courante
testParseDate("2001-10-20");
:
testParseDate("2002/10-20"); // ParseException
testParseDate(null); // NullPointerException
• getTimeInstance(style)
}
• getDateInstance(style)
} • getDateTimeInstance(styleDate, styleHeure)
cal1.setTime(date1);
cal2.setTime(date2); Exemple :
cal1.set(Calendar.HOUR_OF_DAY,0); package com.jmd.test.dej.date;
ENI 13
import java.text.DateFormat;
import java.util.Date; Résultat :
import java.util.Locale;
27/06/06 21:36
public class TestFormaterDate2 {
27 juin 2006 21:36:30
/**
27 juin 2006 21:36:30 CEST
* @param args
mardi 27 juin 2006 21 h 36 CEST
*/
public static void main(String[] args) {
6/27/06 9:36 PM
Date aujourdhui = new Date();
Jun 27, 2006 9:36:30 PM
DateFormat shortDateFormat =
June 27, 2006 9:36:30 PM CEST
DateFormat.getDateTimeInstance(
Tuesday, June 27, 2006 9:36:30 PM CEST
DateFormat.SHORT, DateFormat.SHORT);
ENI 14
Ces caractères peuvent être répétés pour préciser le formater = new SimpleDateFormat("dd MMMMM yyyy
format à utiliser : GGG, hh:mm aaa");
System.out.println(formater.format(aujourdhui));
• Pour les caractères de type Text : moins de 4
caractères consécutifs représentent la version formater = new
abrégée sinon c'est la version longue qui est SimpleDateFormat("yyyyMMddHHmmss");
utilisée. System.out.println(formater.format(aujourdhui));
• Pour les caractères de type Number : c'est le
nombre de répétitions qui désigne le nombre }
de chiffre utilisé complété si nécessaire par
des 0 à gauche. }
• Pour les caractères de type Year : 2 caractères
Résultat :
précisent que l'année est codée sur deux
caractères. 27-06-06
• Pour les caractères de type Month : 3 270606
caractères ou plus représentent la forme 060627
littérale sinon c'est la forme numérique du 9:37 PM
mois. 9:37 PM, CEST
09:37 PM, Heure d'été d'Europe centrale
mardi, 27 juin 2006
Exemple : le 27/06/2006 à 09:37:10
le 27 juin 2006 à 09:37:10
package com.jmd.test.dej.date; 27 juin 2006 ap. J.-C., 09:37 PM
20060627213710
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; Il existe plusieurs constructeurs de la classe
SimpleDateFormat :
public class TestFormaterDate {
Constructeur Rôle
public static void main(String[] args) {
SimpleDateFormat formater = null; Constructeur par défaut
utilisant le modèle par
Date aujourdhui = new Date(); SimpleDateFormat() défaut et les symboles de
formatage de dates de la
formater = new SimpleDateFormat("dd-MM-yy"); Locale par défaut
System.out.println(formater.format(aujourdhui));
Constructeur utilisant le
formater = new SimpleDateFormat("ddMMyy"); modèle fourni et les
System.out.println(formater.format(aujourdhui)); SimpleDateFormat(String) symboles de formatage
de dates de la Locale par
formater = new SimpleDateFormat("yyMMdd"); défaut
System.out.println(formater.format(aujourdhui));
Constructeur utilisant le
formater = new SimpleDateFormat("h:mm a"); SimpleDateFormat(String, modèle et les symboles
System.out.println(formater.format(aujourdhui)); DateFormatSymbols) de formatage de dates
fournis
formater = new SimpleDateFormat("K:mm a, z"); Constructeur utilisant le
System.out.println(formater.format(aujourdhui)); modèle fourni et les
SimpleDateFormat(String,
symboles de formatage
formater = new SimpleDateFormat("hh:mm a, zzzz"); Locale)
de dates de la Locale
System.out.println(formater.format(aujourdhui)); fournie
formater = new SimpleDateFormat("EEEE, d MMM
yyyy");
System.out.println(formater.format(aujourdhui)); 2.5. La classe Vector
formater = new SimpleDateFormat("'le' dd/MM/yyyy Un objet de la classe Vector peut être considéré
'à' hh:mm:ss"); comme une tableau évolué qui peut contenir un
System.out.println(formater.format(aujourdhui)); nombre indéterminé d'objets.
formater = new SimpleDateFormat("'le' dd MMMM
yyyy 'à' hh:mm:ss"); Les méthodes principales sont les suivantes :
System.out.println(formater.format(aujourdhui));
Méthode Rôle
ENI 15
Il est aussi possible de parcourir l'ensemble des
void
ajouter un objet dans le vecteur éléments en utilisant une instance de l'interface
addElement(Object)
Enumeration.
boolean retourne true si l'objet est dans le
contains(Object) vecteur L'interface Enumeration
Object elementAt(int) retourne l'objet à l'index indiqué
L'interface Enumeration est utilisée pour permettre le
retourne une énumeration parcours séquentiel de collections. Enumeration est
Enumeration elements() contenant tous les éléments du une interface qui définit 2 méthodes :
vecteur
4. La classe Scanner
ENI 18
Depuis le JDK 5.0 , la saisie à partir de la fenêtre 1) créer un fichier texte MANIFEST.MF contenant la
d'exécution est plus simple. La classe classe à exécuter et les archives à mettre dans le
java.util.Scanner, qui possède différents constructeurs classpath :
dont un de type InputStream que nous utilisons dans Manifest-Version : 1.0
notre exemple, permet de saisir différents types de Created-By : 1.4. (Sun Microsystems)
données. Main-Class : classemain
Class-Path : archive1.jar archive2.jar
Exemple 1 : Saisie sur clavier
Attention: il est nécessaire de terminer le fichier
import java.util.Scanner; manifest par un saut de ligne
public class SaisieClavier { 2) créer un fichier jar comme suit
public static void main(String[] args) { jar cvfm monappli.jar MANIFEST.MF . (*.class)
Scanner sc = new Scanner(System.in);
String s = ""; Pour l’exécuter , utiliser java –jar monappli.jar ou
while(s.compareTo("ok")!=0){ cliquer sur le fichier jar.
s = sc.nextLine(); Sous Linux, chmod +x monappli.jar et puis
System.out.println("Chaine="+s); ./monappli.jar
}
} Comment récupérer des paramètres d'une ligne de
} commande ?
Exemple 2 : Saisie sur clavier Cela se fait de la même manière que dans la plupart
des langages comme C/C++, C-Shell, Bash, ...
class SaisieClavier {
public static void main (String[] arg) { Lors de l'appel du programme :
java.util.Scanner entree = new java MaClasse param1 param2 ... paramN
java.util.Scanner(System.in); Les paramètres sont stockés dans un tableau de
System.out.println("Donnez votre prénom et votre chaines de caractères qui se trouve dans la méthode
nom"); main de la classe principale :
String prenom = entree.next();
String nom = entree.next(); public static void main (String[] args) { ... }
On peut ainsi accéder aux éléments rentrés en
System.out.println("Donnez votre âge");
paramètres via le tableau "args", par exemple :
int age = entree.nextInt();
entree.nextLine();
/ / nombre de paramètres
System.out.println("Ecrire votre phrase");
String phrase = entree.nextLine(); int nbParam = args.length;
System.out.println("Marie (true,false)"); for (int i = 0; i < nbParam; i++) {
boolean marie = entree.nextBoolean(); System.out.println(args[i]);
System.out.println("Donner votre noute"); }
double note = entree.nextDouble();
System.out.println(prenom + " " + nom + ", " + age + "
ans, dit : " + phrase+ " Marié:"+marie+ " Note= "+note); Attention : une exception est levée si l'on tente
} d'accéder à un élément du tableau qui n'existe pas.
}
Comment afficher les caractères spéciaux
ENI 19