flux octets et caractères

flux octets et caractères - Java - Programmation

Marsh Posté le 23-02-2014 à 23:36:52    

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
Reply

Marsh Posté le 23-02-2014 à 23:36:52   

Reply

Marsh Posté le 24-02-2014 à 16:03:38    

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
Reply

Marsh Posté le 24-02-2014 à 18:21:00    

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.

Reply

Marsh Posté le 24-02-2014 à 21:01:13    

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
Reply

Marsh Posté le 24-02-2014 à 21:51:38    

ok ok

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed