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

  FORUM HardWare.fr
  Programmation
  Java

  flux octets et caractères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

flux octets et caractères

n°2220538
einsteinem​c2
Posté le 23-02-2014 à 23:36:52  profilanswer
 

Bonjour a tous  
 
Merci à tous ceux qui prendront la peine de m'aider , je suis sur un énoncé d'exercice java , et je bloque totalement sur la question :

Modifier la méthode principale de la classe Cave
de manière à ajouter une option permettant d’exporter
en mode texte le contenu de l’
objet cave dans un fichier dont le
nom sera demandé à l’utilisateur.
Vérifiez que vous pouvez lire le contenu de ce fichier avec l’application wordpad.

 
Voici le code de la classe Cave
 

Code :
  1. package tp5;
  2. import java.io.* ;
  3. import java.util.* ;
  4. public class Cave {
  5.   private Vector etagere ;
  6.  
  7.  
  8.   private class EtagereVide extends Exception {}
  9.   public Cave() {
  10.     etagere = new Vector() ;
  11.   }
  12.   public void insere (Vin v) {
  13.     etagere.add(v) ;
  14.   }
  15.   public Vin donne(int i) {
  16.     try {
  17.       return (Vin) etagere.get(i - 1);
  18.     }
  19.     catch (Exception e) {
  20.       return null ;
  21.     }
  22.   }
  23.   public String toString() {
  24.     String ret = "Cave :\n";
  25.     for (int i=0 ; i<etagere.size() ; i++ )
  26.       ret=ret.concat( "lot " + (i+1) + " : " + etagere.get(i) +"\n" );
  27.     return ret ;
  28.   }
  29.   private void test() {
  30.     insere(new Vin("Domaine du Plessis","Chinon",
  31.                    "S.C.E.A. Vaugaudry",2000,2003,12));
  32.     insere(new Vin("La Tour de France","Côte du Roussillon",
  33.                    "S.C.V. Latour de France",2001,2004,6));
  34.     insere(new Vin("Sainte Marie","Côte de Provence",
  35.                    "Domaine Sainte Marie",2003,2004,18));
  36.     insere(new Vin("Les premières Grives","Côte de Gascogne",
  37.                    "Domaine du Tariquet",2002,2005,10));
  38.   }
  39.   public static void main(String[] args) {
  40.     Cave cave = new Cave();
  41.     BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  42.     int choix, num;
  43.     Vin v;
  44.     boucle:while (true) {
  45.       System.out.println("Vous souhaitez " );
  46.       System.out.println("   1 – Entrer  un nouveau lot de bouteilles " );
  47.       System.out.println("   2 – Chercher un vin par numéro" );
  48.       System.out.println("   3 – Afficher la cave " );
  49.       System.out.println("   9 – Initialiser la cave avec un jeu de test " );
  50.       System.out.println("   10 – quitter " );
  51.       System.out.print("           Votre choix : " );
  52.       try {
  53.         choix = Integer.parseInt(stdin.readLine());
  54.       }
  55.       catch (Exception e) {
  56.         System.out.println(" *** ERREUR **** Saisie non valide" );
  57.         continue boucle;
  58.       }
  59.       switch (choix) {
  60.         case 1:
  61.           cave.insere(Vin.saisieClavier());
  62.           break;
  63.         case 2:
  64.           System.out.print(" Entrez le numéro de lot : " );
  65.           saisie : while (true) {
  66.             try {
  67.               num = Integer.parseInt(stdin.readLine());
  68.               break ;
  69.             }
  70.             catch(Exception e) {
  71.               System.out.println("erreur de saisie, recommencez :" );
  72.             }
  73.           }
  74.           try {
  75.            v = cave.donne(num);
  76.            System.out.println(v);
  77.           } catch (EtagereVide e) {
  78.            System.out.println("Pas de lot à ce numéro !..." );
  79.           }
  80.           break;
  81.         case 3:
  82.           System.out.println(cave);
  83.           break;
  84.         case 9:
  85.           cave = new Cave();
  86.           cave.test();
  87.           break;
  88.         case 10:
  89.           break boucle;
  90.         default :
  91.           System.out.println(" *** ERREUR **** Option non disponible" );
  92.        }
  93.     }
  94.   }
  95. }


 
 
Merci à tous ceux qui prendrons la peine de répondre.


Message édité par einsteinemc2 le 23-02-2014 à 23:55:13
mood
Publicité
Posté le 23-02-2014 à 23:36:52  profilanswer
 

n°2220617
willy le k​id
Posté le 24-02-2014 à 16:03:38  profilanswer
 

Beinh tu ajoutes un choix "4) export texte" dans le menu texte (entre ligne 60 et 61)
 
tu ajoutes un "case 4" après la ligne 96
 
La tu fais un :
  System.out.print(" Entrez le nom de fichier (exemple export.txt) : " );
   
  tu fais  
  String nomFichier = stdin.readLine();
   
  puis tu appelles une méthode ecrire(nomFichier, cave.toString());
   
  La méthode ecrire() est la
  http://en.kioskea.net/faq/25178-wr [...] pplication
   
  Tu verras apparaitre un beau fichier texte que tu pourras ouvrir avec wordpad


Message édité par willy le kid le 24-02-2014 à 16:05:02
n°2220633
einsteinem​c2
Posté le 24-02-2014 à 18:21:00  profilanswer
 

merci pour ta réponse willy le kid :D j'ai essayé ce que tu ma proposer sa à l'air correcte mais je n'arrive pas à compiler vu que j'ai une erreur il met dit que ma méthode écrire n'est pas défini pourtant je l'ai défini à la fin de mon programme comme je l'ai vu sur le lien que tu ma donné, du coup je peine .. et il me met " Cannot make a static reference to the non-static method ecrire(String, String) from the type Cave " et lorsque je veut mettre ma methode en static c'est stdin.readLine() qui devient une erreur , je comprend pas.
 
Voila mon code:
 

Code :
  1. package tp5;
  2. import java.io.* ;
  3. import java.util.* ;
  4. public class Cave {
  5.   private Vector etagere ;
  6.  
  7.   private class EtagereVide extends Exception {}
  8.   public Cave() {
  9.     etagere = new Vector() ;
  10.   }
  11.   public void insere (Vin v) {
  12.     etagere.add(v) ;
  13.   }
  14.   public Vin donne(int i) {
  15.     try {
  16.       return (Vin) etagere.get(i - 1);
  17.     }
  18.     catch (Exception e) {
  19.       return null ;
  20.     }
  21.   }
  22.   public String toString() {
  23.     String ret = "Cave :\n";
  24.     for (int i=0 ; i<etagere.size() ; i++ )
  25.       ret=ret.concat( "lot " + (i+1) + " : " + etagere.get(i) +"\n" );
  26.     return ret ;
  27.   }
  28.   private void test() {
  29.     insere(new Vin("Domaine du Plessis","Chinon",
  30.                    "S.C.E.A. Vaugaudry",2000,2003,12));
  31.     insere(new Vin("La Tour de France","Côte du Roussillon",
  32.                    "S.C.V. Latour de France",2001,2004,6));
  33.     insere(new Vin("Sainte Marie","Côte de Provence",
  34.                    "Domaine Sainte Marie",2003,2004,18));
  35.     insere(new Vin("Les premières Grives","Côte de Gascogne",
  36.                    "Domaine du Tariquet",2002,2005,10));
  37.   }
  38.   public static void main(String[] args) {
  39.     Cave cave = new Cave();
  40.     BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  41.     int choix, num;
  42.     Vin v;
  43.     boucle:while (true) {
  44.       System.out.println("Vous souhaitez " );
  45.       System.out.println("   1 – Entrer  un nouveau lot de bouteilles " );
  46.       System.out.println("   2 – Chercher un vin par numéro" );
  47.       System.out.println("   3 – Afficher la cave " );
  48.       System.out.println("   9 – Initialiser la cave avec un jeu de test " );
  49.       System.out.println("   10 – quitter " );
  50.       System.out.print("           Votre choix : " );
  51.       try {
  52.         choix = Integer.parseInt(stdin.readLine());
  53.       }
  54.       catch (Exception e) {
  55.         System.out.println(" *** ERREUR **** Saisie non valide" );
  56.         continue boucle;
  57.       }
  58.       switch (choix) {
  59.         case 1:
  60.           cave.insere(Vin.saisieClavier());
  61.           break;
  62.         case 2:
  63.           System.out.print(" Entrez le numéro de lot : " );
  64.           saisie : while (true) {
  65.             try {
  66.               num = Integer.parseInt(stdin.readLine());
  67.               break ;
  68.             }
  69.             catch(Exception e) {
  70.               System.out.println("erreur de saisie, recommencez :" );
  71.             }
  72.           }
  73.           try {
  74.            v = cave.donne(num);
  75.            System.out.println(v);
  76.           } catch (EtagereVide e) {
  77.            System.out.println("Pas de lot à ce numéro !..." );
  78.           }
  79.           break;
  80.         case 3:
  81.           System.out.println(cave);
  82.         case 4:
  83.          System.out.print(" Entrez le nom du fichier (Par exemple ficexport.txt) : " );
  84.            String nomFichier = stdin.readLine();
  85.            ecrire(nomFichier, cave.toString()); // j'ai une faute à cette ligne pourtant j'ai bien défini la méthode dans ma classe ???  
  86.           break;
  87.         case 9:
  88.           cave = new Cave();
  89.           cave.test();
  90.           break;
  91.         case 10:
  92.           break boucle;
  93.         default :
  94.           System.out.println(" *** ERREUR **** Option non disponible" );
  95.        }
  96.     }
  97.   }
  98.   /******** methode ecrire *****************/
  99.  
  100.   public void ecrire(String nomFic, String texte)
  101. {
  102.  //on va chercher le chemin et le nom du fichier et on me tout ca dans un String
  103.  String adressedufichier = System.getProperty("user.dir" ) + "/"+ nomFic;
  104.  //on met try si jamais il y a une exception
  105.  try
  106.  {
  107.  
  108.  
  109.   FileWriter fw = new FileWriter(adressedufichier, true);
  110.   // le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
  111.   BufferedWriter output = new BufferedWriter(fw);
  112.   //on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream)
  113.   output.write(texte);
  114.   //on peut utiliser plusieurs fois methode write
  115.   output.flush();
  116.   //ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter
  117.   output.close();
  118.   //et on le ferme
  119.   System.out.println("fichier créé" );
  120.  }
  121.  catch(IOException ioe){
  122.   System.out.print("Erreur : " );
  123.   ioe.printStackTrace();
  124.   }
  125. }
  126. }


 
Merci d'avance pour ta réponse.

n°2220657
willy le k​id
Posté le 24-02-2014 à 21:01:13  profilanswer
 

Non, merci, il ne faut pas abuser.
Tu te débrouilles. Ca c'est du niveau débutant,
et tu n'as sans doute pas cherché dans Google.
Et l'aide aux exercices est a priori exclue du forum java.


Message édité par willy le kid le 24-02-2014 à 21:01:59
n°2220661
einsteinem​c2
Posté le 24-02-2014 à 21:51:38  profilanswer
 

ok ok


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

  flux octets et caractères

 

Sujets relatifs
fonction manipulant les chaines de caractèresModéliser des applications et leurs flux
Suppressions dans une chaine de caractèresMultiplier les chiffres dans une chaîne de caractères
fgets ne lit pas les caractères spéciaux?Fixer le nombre de caractères par ligne d'un fichier
inverser re.escape() pour des caractères non ASCIIVBA et chaine de caractères
[BATCH] choix des caractèresTester si une variable contient des caractères
Plus de sujets relatifs à : flux octets et caractères


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