Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1903 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Decorateur problème UpperCase

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Decorateur problème UpperCase

n°2215288
roswellent​ongues
Posté le 07-01-2014 à 22:52:13  profilanswer
 

Bonjour,
 
Je cherche à faire un petit bout de programme permettant de transformer en majuscules un fichier en entrée. Pour ce faire, j'utilise le pattern décorateur comme suit :  
 

Code :
  1. public class UpperCaseInputStream  extends FilterInputStream{
  2.    protected UpperCaseInputStream(InputStream in) {
  3.       super(in);
  4.    }
  5.  
  6.   public int read() throws IOException {
  7.        int c = super.read();
  8.          
  9.        return (c != -1 ? c : Character.toUpperCase((char)c));
  10.      
  11.  
  12.    }
  13.    public int read(byte[] b, int offset, int len) throws IOException {
  14.        int result = super.read(b, offset, len);
  15.        for (int i = offset; i < offset+result; i++) {
  16.            b[i] = (byte)Character.toUpperCase((char)b[i]);
  17.        }
  18.        return result;
  19.     }
  20. }


 
Et en test :  

Code :
  1. public void testUpper () throws Exception {
  2.  
  3.      InputStream is = new UpperCaseInputStream(new BufferedInputStream(new FileInputStream(new File("README.TXT" )))); //le fichier contient une petite phrase toute bête en minuscules
  4.      int c = is.read();
  5.      while (c != -1) {
  6.         System.out.println((char)c);
  7.         }
  8.       is.close();
  9.    
  10.     }


Et à l'affichage sur la console, j'obtiens une boucle infinie me sortant des tirets " - ", sans fin. Si quelqu'un sait où est mon erreur, merci pour l'aide apportée

mood
Publicité
Posté le 07-01-2014 à 22:52:13  profilanswer
 

n°2215321
roswellent​ongues
Posté le 08-01-2014 à 11:06:26  profilanswer
 

trouvé en forçant le path (au lieu de mettre README.TXT mettre "monpath/README.TXT" )
En revanche, la conversion ne se fait pas. Pourquoi ?

n°2215331
Terminapor
I'll see you rise.
Posté le 08-01-2014 à 11:52:24  profilanswer
 

Code :
  1. public int read() throws IOException {
  2.        int c = super.read();
  3.        
  4.        return (c != -1 ? c : Character.toUpperCase((char)c));
  5.    
  6.    }

 

Dans cette fonction, tu renvois "Character.ToUpperCase( (char)c )" seulement si c == -1.

 

(opérateur ternaire : condition ? valeur_si_vrai : valeur_si_faux)


Message édité par Terminapor le 08-01-2014 à 11:52:34

---------------
Perhaps you don't deserve to breathe
n°2215351
roswellent​ongues
Posté le 08-01-2014 à 14:13:54  profilanswer
 

En effet, Merci. En faisant plus simple qu'en ternaire, ça va tout de suite beaucoup mieux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Decorateur problème UpperCase

 

Sujets relatifs
Problème création liste par VBAproblème de résolution
[c] Probleme afficher valeur correcte tableauproblème insertion images site web
Probleme de comptage (SQL Oracle)problème d'excécution 13
un probleme en matlabaidez moi svp probleme php vers word
Fortran : Probleme de lecture[ORACLE] problème avec "select in select" ou équivalent
Plus de sujets relatifs à : Decorateur problème UpperCase


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR