EntreeClavier.java
Résolu
Arno59
Messages postés
4600
Date d'inscription
Statut
Contributeur
Dernière intervention
-
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/