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 :

[débutant]Convertir tous les minuscules en majuscule dans un flot d'entrée


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut [débutant]Convertir tous les minuscules en majuscule dans un flot d'entrée
    Bonjour,

    Je souhaiterais convertir tous les minuscules en majuscule dans un flot d'entrée.
    D'après la documentation de java , je peux utiliser la classe filterInputStream qui me permettra d'effectuer la conversion en majuscule

    Voici comment j'ai procédé:

    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
     
    public class UpperCaseInputStream extends FilterInputStream { 
     
       public UpperCaseInputStream (InputStream in ){      
        super(in); // in represente le flux d'entrée à filtrer
       }
     
        public int read() throws IOException{
          /** on récupere le premier caracter, si le  premier est caractere est en majuscule ,on le laisse tel quel 
           * sinon on effectue les passage de miniscule -> majuscule 
           */
     
           int c = super.read();  //lit le prochaine octet de données à partir du flux d'entrée.
           if(c == -1 ) 
           {  
               System.out.println("le fichier ne contient aucun octet"); 
               return c ;     
            }else{ 
                 System.out.println("le fichier contient un octet");
                 return Character.toUpperCase(c); //le caractere lu est converti en majuscule            
                }
            }
    Pourriez vous me dire ce qui ne vas pas dans ce codage.
    Par ailleurs , je pourrais trouver une alternative a cela en utilisant la methode read(byte[] b, int off, int len); je ne vois pas tres bien comment je pourrais la coder.

    Merci d'avance

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Ce serait bien, en plus de nous demander ce qui ne va pas, de nous dire ce qui ne va pas pour toi ! Il peut y avoir tellement de choses....

    Bon, je me lance à répondre à la devinette : c'est peut être, dans ta méthode read, ton appel à super.read() ; à mon avis, ici, il faudrait plutôt in.read(). Mais c'est juste conjectures.

    Je passe la balle au suivant.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Ce serait bien, en plus de nous demander ce qui ne va pas, de nous dire ce qui ne va pas pour toi ! Il peut y avoir tellement de choses....
    Pardonne moi de ne pas avoir été très explicite.

    Je reprend mes explications :
    -> j'ai un fichier .Txt contenant une phrase en minuscule.
    -> Lors de la compilation du programme , aucune erreur a été déctectée.
    Pourtant la conversion n'a pas eu lieu.

    Donc ou pourrait situer mon errreur ?

    Si j'ai bien compris, l'algorithme pour effectuer cette conversion devrait faire cela :
    -> On recupere le flux d'entrée autrement dit le nom du fichier
    (la classe dérivée fait appel a la methode constructeur de clase de base pour se placer dans le fichier selectionné.)
    -> La methode read nous permettra de lire le fichier de façon séquentiel (octets par octets) et retournera != -1 s'il existe un contenu dans le fichier.
    ->Si existence d'un contenu alors on effectue la conversion en majuscule.

  4. #4
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    À vue de nez il faut :
    1. Ouvrir ton fichier par FileInputStream
    2. Ouvrir ton filtre en lui passant le FileInputStream en paramètre du constructeur
    3. lire le fichier avec ton filtre
    4. ... et surtout, comme je te le dis plus haut, remplacer super.read par in.read ! A ce sujet, java.io applique le modèle du décorateur, pas celui de l'héritier (du moins pas dans ce cas là).

  5. #5
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Quelques remarques :
    • Java utilise l'Unicode donc un caractère est codé sur 2 octets et non pas sur un .
    • Utilise un flux de caractères plutôt qu'un flux binaire


    Ceci devrait marcher :
    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
     
     public void readMaj(){
            try{
                BufferedReader br=new BufferedReader(new FileReader("monFichier.txt"));
                try{
                    String ligne;
                    String ligneMajuscule;
                    while((ligne=br.readLine())!=null){
                        ligneMajuscule=ligne.toUpperCase();
                        System.out.println(ligneMajuscule);
                    }
                }finally{
                    br.close();
                }
            }catch(IOException ex){
                ex.printStackTrace();
            }
        }
    Plus d'informations ici : Tutoriel java.io

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Bonjour

    Merci afrikha, spekal. Le code fonctionnement desormais.
    merci pour le tutorial cela m'a aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]_Récupérer tous les widgets d'une fenêtre_
    Par orfix dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/05/2008, 22h52
  2. Extraction de tous les Lundis du mois dans une requête
    Par cumpa100 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/02/2008, 14h15
  3. [RegEx] Trouver les mots en majuscule dans une chaine
    Par Boeing dans le forum Langage
    Réponses: 2
    Dernier message: 15/10/2007, 23h44
  4. [débutant] action tous les x temps
    Par shinkyo dans le forum C
    Réponses: 13
    Dernier message: 08/06/2006, 23h59
  5. [débutant] #PCDATA = tous les caractères voulus ?
    Par prgasp77 dans le forum Valider
    Réponses: 2
    Dernier message: 17/05/2005, 22h53

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