IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Coder une méthode peek() ?


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Coder une méthode peek() ?
    Bonjour,

    J'essaie de coder une méthode peek() [voir la dernière méthode dans le code ci-bas]. L'idée étant de faire en sorte que "public SAMLine peek()" me renseigne que sera la prochaine ligne SAM (vide en fin de fichier), mais sans avancer dans le fichier. J'ai beau essayer mais je ne vois pas comment y arriver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    public class SAMFile implements Iterator<SAMLine> {
        private BufferedReader	in     = null;
        private String		line   = null;
        private SAMLine		string = null;
        private FileReader		reader;
     
        /**
         * Constructs ...
         * @param file
         * @throws IOException
         */
        public SAMFile(File file) throws IOException {
            try {
                reader = new FileReader(file);
                in     = new BufferedReader(reader);
                line   = in.readLine();
     
                if (!line.startsWith("@")) {
                    string = new SAMLine(line);
                }
     
                if (string == null) {
                    in.close();
                    in = null;
                }
            } catch (IOException e) {
                string = null;
     
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e2) {}
                }
     
                in = null;
     
                throw e;
            }
        }
     
        @Override
        public boolean hasNext() {
            return string != null;
        }
     
        @Override
        public SAMLine next() throws NoSuchElementException {
            SAMLine	returnString = string;
     
            try {
                if (string == null) {
                    throw new NoSuchElementException("Next line is not available");
                } else {
                    if (!line.startsWith("@")) {
                        string = new SAMLine(line);
                    }
     
                    if ((string == null) && (in != null)) {
                        in.close();
                        in = null;
                    }
                }
            } catch (NoSuchElementException | IOException ex) {
                throw new NoSuchElementException("Exception caught in SAMLineIterator.next() " + ex);
            }
     
            return returnString;
        }
     
        @Override
        public void remove() {
            throw new UnsupportedOperationException("FileLineIterator.remove() is not supported");
        }
     
        @Override
        protected void finalize() throws Throwable {
            try {
                string = null;
     
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e) {}
                }
     
                in = null;
            } finally {
                super.finalize();
            }
        }
     
        public SAMLine peek() {
     
            // TO DO
     
            return null;
        }
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 609
    Points
    21 609
    Par défaut
    Ajouter deux variable :

    SAMLine pendingLine;
    boolean hasPendingLine;

    Quand tu fais un peek(), tu lis une ligne normalement, mais tu la sauvegarde dans pendingLine et tu passes hasPendingLine à true.

    Quand tu fais un next(), tu vérifies hasPendingLine, et en fonction, tu renvoies celle que tu avais déjà et passe hasPendingLine à false, ou bien tu n'en avais pas et tu en lis une normalement.

    C'est du niveau de la deuxième semaine d'un cursus d'informaticien... Oublié les bases -_-° ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Je cherche une méthode de collision
    Par ptitbonum dans le forum Physique
    Réponses: 5
    Dernier message: 21/09/2004, 14h20
  2. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 14h51
  3. [Reflection] Exécuter une méthode donnée d'une classe
    Par schousso dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/06/2004, 10h35
  4. Réponses: 3
    Dernier message: 16/04/2004, 16h51
  5. une méthode qui écrit dans la sortie html ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/12/2003, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo