Académique Documents
Professionnel Documents
Culture Documents
← (précédent) A.2 Les variables (1) : les types primitifs - les constantes
Accueil ↔ S O M M A I R E
En Java, il existe des fonctions prédéfinies de lecture. Mais elles sont délicates à manipuler pour un débutant. La plus
simple d' entre elles s' appelle System.in.read(); Malheureusement, cette fonction permet de saisir un seul caractère.
Sans trop entrer dans les détails, sachez que les choses ne sont jamais simples lorsqu' il s' agit de saisir une donnée au
clavier. Ce n' est pas comme le fait d' afficher avec System.out.print().
La voie la plus simple, c' est de créer ses propres fonctions de lecture à partir de System.in.read() ou à partir de toute
autre fonction prédéfinie de lecture. Seulement, pour un débutant, c' est mission impossible. Il faut assimiler un certain
nombres de notions et pour l' instant, nous en sommes loin. Pour cette raison, les auteurs de livre sur Java fournissent
dans un cd-rom, des fonctions de lecture. J' ai donc fourni dans l' exemple zéro ci-dessous, les fonctions de l' un de ces
auteurs. Ces fonctions sont regroupées dans une classe appelée Lire. Enregistrez cette classe sous l' extension Lire.java
dans le même repertoire que les programmes que vous testez.
Vous pouvez faire du copier-coller.
EXEMPLE Zéro
import java.io.*;
}
}
catch (IOException e)
{
System.out.println("Erreur de frappe");
System.exit(0);
}
return tmp;
}
// Cette fonction permet de saisir au clavier une variable entière de type byte
public static byte entierByte()
{
www.neophytes.info/java/a3.html 1/5
26/12/2023 08:01 Débutant Java : La fonction System.in.read() : Siasir une information au clavier.
byte x=0;
try
{
x = Byte.parseByte(chaine());
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
// Cette fonction permet de saisir au clavier une variable entière de type Short
public static short entierShort()
{
short x=0;
try
{
x=Short.parseShort(chaine());
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
// Cette fonction permet de saisir au clavier une variable entière de type int
public static int entierInt()
{
int x=0;
try
{
x=Integer.parseInt(chaine());
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
// Cette fonction permet de saisir au clavier une variable entière de type long
public static long entierLong()
{
long x=0;
try
{
x=Integer.parseInt(chaine());
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
www.neophytes.info/java/a3.html 2/5
26/12/2023 08:01 Débutant Java : La fonction System.in.read() : Siasir une information au clavier.
public static float reelFloat()
{
float x=0.0f;
try
{
x=Double.valueOf(chaine()).floatValue();
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}
Commencez par remarquer l' aération du code. Les accolades appartenant au même couple sont sur la même verticale.
Les verticales des accolades conteneurs et accolades contenus sont décalées par une marge. Les instructions d' un
même contenu commencent toujours sur la même verticale. Que c' est agréable de voir ça.
La classe Lire ci-dessus contient des fonctions de lecture au clavier. Ce ne sont pas des fonctions prédéfinies comme la
fonction System.out.print(). Ces fonctions, et donc la classe qui les contient, ont été définies par un auteur de livres sur
Java. J' ai juste changé le nom des fonctions.
Ces fonctions sont déclarées à chaque fois sous une phrase précédé de //
Le double slash (//) est utilisé en JAVA pour des commentaires sur une ligne. Si vous voulez mettre des commentaires
sur plusieurs lignes, vous utiliserez le /* en début de la première ligne et le */ en fin de dernière ligne.
Revenons aux fonctions de lecture de la classe Lire ci-dessus. Je disais donc que chacune de ces fonctions est définie
juste en dessous d' un commentaire qui précisément indique ce que fait la fonction.
la fonction chaine() permet de lire une variable de type String. Les autres fonction sont : entierByte(), entierShort(),
entierInt(), entierLong(), reelDouble(), reelFloat() et caractère() dont l' action est définie par le caractère commenté au-
dessus de leur définition.
EXEMPLE 1 :
www.neophytes.info/java/a3.html 3/5
26/12/2023 08:01 Débutant Java : La fonction System.in.read() : Siasir une information au clavier.
4. public static void main (String [] args)
5. {
6. System.out.println("Entrez un nombre entier de type byte (entre -128 et +127) : ");
7. byte age = Lire.entierByte();
8. System.out.println("Vous avez saisi le nombre " + age);
9. }
10. }
De manière générale, l' instruction type variable = fonction de lecture(); signifie que le programme s' arrête, attend que
l' utilisateur saisisse une variable au clavier. Lorsque l' utilisateur appuie alors sur la touche d' entrée, aussitôt, la valeur
saisie est affectée à la variable.
EXEMPLE 2 :
www.neophytes.info/java/a3.html 4/5
26/12/2023 08:01 Débutant Java : La fonction System.in.read() : Siasir une information au clavier.
Si on utilise la fonction dans la même classe où on l' a définit, on écrit simplement le nom de fonction suivi de ses
parenthèses. Eventuellement les paramètres à l' intérieur des parenthèses.
Exemple : regardez la définition de la deuxième fonction de la classe Lire. C' est la fonction entierByte(). A l' intérieur
de cette fonction, on utilise la première fonction, la fonction chaine(). Sur la ligne où est écrite l' instruction : x =
Byte.parseByte(chaine());
Si on utilise une fonction dans une classe différente de celle dans laquelle est elle est définie, on écrit le nom de la
classe, suivie d' un point, lui même suivi du nom de la fonction. Dans les exemples 1 et 2, nous avons défini les classes
Lecture1 et Lecture2. Dans ces classes , nous avons utilisé les fonctions chaine(), entierByte(), entierShort(),
entierInt(), entierLong(), reelFloat(), reelDouble() et caractere(). C' est pourquoi on a précisé le nom de leur classe afin
que le compilateur Java puisse aller chercher ces fonctions dans la classe correpondante. C' est pourquoi on a écrit
Lire.entierByte(), Lire.entierShort(), Lire.entierInt(), Lire.entierLong(), Lire.reelFloat(), Lire.reelDouble(),
Lire.caractere(), Lire.chaine().
De même, la fonction System.out.print() est en réalité la fonction print() définie dans la classe System. Evidement,
vous ne pouvez pas voir le code de cette classe. Car cette classe est prédéfinie par le langage Java.
La question légitime que vous vous êtes déjà posée est de savoir ce que vient faire out entre System et print. C' est la
même question que vous vous poserez à savoir ce que vient faire in entre System et read. Puisque la fonction read() est
définie dans la classe System.
L' explication pour l' instant n' est pas indispensable. Plus tard !
Sachez simplement que out et in représentent ce qu' on appelle en java, un flux de sortie (out) et un flux d' entrée (in).
Sur l' EXEMPLE 2 :Les lignes 6, 7 et 8 sont exactement celles de l' exemple 1. Même explication donc. Ensuite, nous
avons à la ligne 8, l' instruction System.out.println(); Ici, rien dans les parenthèses de la fonctionSystem.out.println().
Ça veut dire que rien ne s' affichera. Et le curseur se placera quand même à la ligne suivante à cause de ln à la fin de
print. Cette instruction permet seulement d' afficher une ligne vide pour séparer des paragraphes par exemple.
Pour les 4 lignes suivantes, même explication. Avec une différence : le type de variable change. Ainsi de suite jusqu' au
bout.
Si vous essayez de mettre une valeur de type différent que la variable, il est possible que ça ne marche pas. Dans
certains cas, ça marchera. Par exemple : On peut mettre une valeur type byte dans une variable de type short. Mais pas
l' inverse. Pourquoi ? ... On le verra plus en détail au prochain paragraphe (1.4 opérateurs et opérations sur les
variables).
← (précédent) A.2 Les variables (1) : les types primitifs - les constantes
Accueil ↔ S O M M A I R E
www.neophytes.info/java/a3.html 5/5