EntreeClavier.java
Résolu
Arno59
Messages postés
4753
Statut
Contributeur
-
the_felis_leo -
the_felis_leo -
Bonjour,
Je souhaite améliorer le programme EntreeClavier.java que j'ai réalisé sous JDK1.3 ;
Voici la source:
Je souhaite améliorer le programme EntreeClavier.java que j'ai réalisé sous JDK1.3 ;
Voici la source:
/********************************************************
* Nom programme : EntreeClavier.java *
* Auteur : Arnaud *
* Date de création : 25 janvier 2003 *
* Date de modification : 28 novembre 2005 *
* Version java : Jdk 1.3 - Jdk 1.5_5 *
* Systeme d'exploitation: Windows 98SE, XP Pro, Linux *
********************************************************/
import java.io.*;
public class EntreeClavier{
public static int readInt(){
boolean flag = false;
int i = -1;
while(!flag){
String s = "";
try{
char c;
for(c = (char)System.in.read(); c != '\n' && c != '\r'; c = (char)System.in.read())
s = s + c;
if(c == '\r')
c = (char)System.in.read();
i = Integer.parseInt(s);
flag = true;
}
catch(IOException ioexception){
System.out.println("Erreur");
}
catch(NumberFormatException numberformatexception){
System.out.println("Erreur enter un nombre");
}
}
return i;
}
public static int readInt(String s){
System.out.print(s);
return readInt();
}
public static float readFloat(){
boolean flag = false;
float f = 0.0F;
while(!flag){
String s = "";
try{
char c;
for(c = (char)System.in.read(); c != '\n' && c != '\r'; c = (char)System.in.read())
s = s + c;
if(c == '\r')
c = (char)System.in.read();
f = Float.parseFloat(s);
flag = true;
}
catch(IOException ioexception){
System.out.println("Erreur");
}
catch(NumberFormatException numberformatexception){
System.out.println("Erreur entez un nombre");
}
}
return f;
}
public static float readFloat(String s){
System.out.print(s);
return readFloat();
}
public static double readDouble(){
boolean flag = false;
double d = 0.0D;
while(!flag){
String s = "";
try{
char c;
for(c = (char)System.in.read(); c != '\n' && c != '\r'; c = (char)System.in.read())
s = s + c;
if(c == '\r')
c = (char)System.in.read();
d = Float.parseFloat(s);
flag = true;
}
catch(IOException ioexception){
System.out.println("Erreur");
}
catch(NumberFormatException numberformatexception){
System.out.println("Erreur entez un nombre");
}
}
return d;
}
public static double readDouble(String s){
System.out.print(s);
return readDouble();
}
public static char readChar(){
char c = ' ';
try{
char c1 = (char)System.in.read();
c = c1;
for(; c1 != '\n' && c1 != '\r'; c1 = (char)System.in.read());
if(c1 == '\r')
c1 = (char)System.in.read();
}
catch(IOException ioexception){
System.out.println("Erreur");
}
return c;
}
public static char readChar(String s){
System.out.print(s);
return readChar();
}
public static String readString(){
String s = "";
try{
char c;
for(c = (char)System.in.read(); c != '\n' && c != '\r'; c = (char)System.in.read())
s = s + c;
if(c == '\r')
c = (char)System.in.read();
}
catch(IOException ioexception){
System.out.println("Erreur");
}
return s;
}
public static String readString(String s){
System.out.print(s);
return readString();
}
public static void attente(){
try {
System.in.read();
}
catch(IOException ioexception) {
}
}
}
4 réponses
Quelques idées en vrac...
- passer en objet (oublier les statics)
- extends DataInput
- ajouter un constructeur vide, qui utilisera alors l'InputStream System.in
- ajouter un constructeur avec un InputStream, qui le convertira en InputStreamReader
- ajouter un constructeur avec un InputStreamReader, qui le convertira en Enumeration
- ajouter un autre constructeur avec une Enumeration, qui sera la source à parser
- L'inputStreamReader est à transformer en Enumeration à la façon d'un StringToken.
- Le StreamTokenizer peut être une idée mais ne présente pas d'interface Enumeration !
- Faire une méthode privée générique pour l'aspect NumberFormatException, et traiter par un case et return Object:
... while(true) {
... ... try {
... ... ... switch(type) :
... ... ... ... case INT:
... ... ... ... ... return Integer.parseInt(tokenizer.next());
... ... } catch (...) {...}
- chaque read* fait appel a la méthode générique, comme par exemple: return ((Integer) generique(INT)).value;
// Je suis pas sur que la méthode générique soit le mieux, c'est ça ou copier collé...
- passer en objet (oublier les statics)
- extends DataInput
- ajouter un constructeur vide, qui utilisera alors l'InputStream System.in
- ajouter un constructeur avec un InputStream, qui le convertira en InputStreamReader
- ajouter un constructeur avec un InputStreamReader, qui le convertira en Enumeration
- ajouter un autre constructeur avec une Enumeration, qui sera la source à parser
- L'inputStreamReader est à transformer en Enumeration à la façon d'un StringToken.
- Le StreamTokenizer peut être une idée mais ne présente pas d'interface Enumeration !
- Faire une méthode privée générique pour l'aspect NumberFormatException, et traiter par un case et return Object:
... while(true) {
... ... try {
... ... ... switch(type) :
... ... ... ... case INT:
... ... ... ... ... return Integer.parseInt(tokenizer.next());
... ... } catch (...) {...}
- chaque read* fait appel a la méthode générique, comme par exemple: return ((Integer) generique(INT)).value;
// Je suis pas sur que la méthode générique soit le mieux, c'est ça ou copier collé...
Bonjour,
Tu indiques manque readDate:
public static readDate {
?
}
Que faut-il ajouter ?
Docs Sun
https://docs.oracle.com/en/
Tu indiques manque readDate:
public static readDate {
?
}
Que faut-il ajouter ?
Docs Sun
https://docs.oracle.com/en/