einsteinemc2 | merci pour ta réponse willy le kid 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 :
- package tp5;
- import java.io.* ;
- import java.util.* ;
- public class Cave {
- private Vector etagere ;
-
- private class EtagereVide extends Exception {}
- public Cave() {
- etagere = new Vector() ;
- }
- public void insere (Vin v) {
- etagere.add(v) ;
- }
- public Vin donne(int i) {
- try {
- return (Vin) etagere.get(i - 1);
- }
- catch (Exception e) {
- return null ;
- }
- }
- public String toString() {
- String ret = "Cave :\n";
- for (int i=0 ; i<etagere.size() ; i++ )
- ret=ret.concat( "lot " + (i+1) + " : " + etagere.get(i) +"\n" );
- return ret ;
- }
- private void test() {
- insere(new Vin("Domaine du Plessis","Chinon",
- "S.C.E.A. Vaugaudry",2000,2003,12));
- insere(new Vin("La Tour de France","Côte du Roussillon",
- "S.C.V. Latour de France",2001,2004,6));
- insere(new Vin("Sainte Marie","Côte de Provence",
- "Domaine Sainte Marie",2003,2004,18));
- insere(new Vin("Les premières Grives","Côte de Gascogne",
- "Domaine du Tariquet",2002,2005,10));
- }
- public static void main(String[] args) {
- Cave cave = new Cave();
- BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
- int choix, num;
- Vin v;
- boucle:while (true) {
- System.out.println("Vous souhaitez " );
- System.out.println(" 1 – Entrer un nouveau lot de bouteilles " );
- System.out.println(" 2 – Chercher un vin par numéro" );
- System.out.println(" 3 – Afficher la cave " );
- System.out.println(" 9 – Initialiser la cave avec un jeu de test " );
- System.out.println(" 10 – quitter " );
- System.out.print(" Votre choix : " );
- try {
- choix = Integer.parseInt(stdin.readLine());
- }
- catch (Exception e) {
- System.out.println(" *** ERREUR **** Saisie non valide" );
- continue boucle;
- }
- switch (choix) {
- case 1:
- cave.insere(Vin.saisieClavier());
- break;
- case 2:
- System.out.print(" Entrez le numéro de lot : " );
- saisie : while (true) {
- try {
- num = Integer.parseInt(stdin.readLine());
- break ;
- }
- catch(Exception e) {
- System.out.println("erreur de saisie, recommencez :" );
- }
- }
- try {
- v = cave.donne(num);
- System.out.println(v);
- } catch (EtagereVide e) {
- System.out.println("Pas de lot à ce numéro !..." );
- }
- break;
- case 3:
- System.out.println(cave);
- case 4:
- System.out.print(" Entrez le nom du fichier (Par exemple ficexport.txt) : " );
- String nomFichier = stdin.readLine();
- ecrire(nomFichier, cave.toString()); // j'ai une faute à cette ligne pourtant j'ai bien défini la méthode dans ma classe ???
- break;
- case 9:
- cave = new Cave();
- cave.test();
- break;
- case 10:
- break boucle;
- default :
- System.out.println(" *** ERREUR **** Option non disponible" );
- }
- }
- }
- /******** methode ecrire *****************/
-
- public void ecrire(String nomFic, String texte)
- {
- //on va chercher le chemin et le nom du fichier et on me tout ca dans un String
- String adressedufichier = System.getProperty("user.dir" ) + "/"+ nomFic;
- //on met try si jamais il y a une exception
- try
- {
-
-
- FileWriter fw = new FileWriter(adressedufichier, true);
- // le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
- BufferedWriter output = new BufferedWriter(fw);
- //on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream)
- output.write(texte);
- //on peut utiliser plusieurs fois methode write
- output.flush();
- //ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter
- output.close();
- //et on le ferme
- System.out.println("fichier créé" );
- }
- catch(IOException ioe){
- System.out.print("Erreur : " );
- ioe.printStackTrace();
- }
- }
- }
|
Merci d'avance pour ta réponse. |