EntreeClavier.java

Résolu/Fermé
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 - 29 nov. 2005 à 16:02
 the_felis_leo - 8 juil. 2008 à 00:52
Bonjour,

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

the_felis_leo
8 juil. 2008 à 00:52
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é...
1
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 485
4 déc. 2005 à 14:35
Bonjour,

Y-a-t-il quelque chose à ajouter ?
0
Oui, il manque le readDate... ^^
0
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 485
15 mars 2007 à 10:38
Bonjour,

Tu indiques manque readDate:

public static readDate {
?
}

Que faut-il ajouter ?

Docs Sun
https://docs.oracle.com/en/
0