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

avec Java Discussion :

Sauvegarde de variable


Sujet :

avec Java

  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut Sauvegarde de variable
    Bonjour,

    je débute en java et j'ai a peine appris les algorithmes.
    J'en ai fait un mais quand je stop le programme je perds toutes les données crée dans le tableau.

    Comment les sauvegarder de façon à les réutiliser le lendemain quand je relance mon programme svp ?

    D'avance merci.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Plusieurs solutions :

    pour t'entraîner, la solution la plus simple dans un premier temps est la sauvegarde dans un fichier, soit dans un format particulier (CSV, XML, JSON...), soit en utilisant la sérialisation des objets java.

    Ensuite, pour aller plus loin, tu pourras utiliser une base de données (MySQL, SQLite, PostgreSQL, etc.).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre averti
    Profil pro
    Doctorant en informatique théorique
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Doctorant en informatique théorique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Par défaut
    Salut,

    Tu dois bien comprendre que toutes les variables de ton programme n'existent que pendant l'exécution de celui-ci. Pour garantir la persistance des données (leur sauvegarde apres une exécution pour réutilisation future), tu dois les enregistrer par toi-meme.

    A partir de la, plusieurs solutions s'offrent a toi (cela depend un peu de ce que tu veux stocker comme données). En general, on utilise une base de données, mais ici, je pense qu'un simple fichier suffira.

    Regarde un peu comment enregistrer un objet dans un fichier (l'objet en question doit hériter de l'interface Serializable). Si c est du texte, tu peux simplement l écrire tel quel dans un fichier texte. Pour une utilisation future, tu devras alors lire ton fichier pour y retrouver les données.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Merci pour tout,
    par contre auriez vous des sources pour apprendre a faire ça (xml,csv etc...) ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Tu peux débuter en utilisant un fichier de properties. Les fichiers de properties sont des fichiers texte qui contiennent des couples clé/valeur séparés par le signe =.

    Par exemble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #Ceci est un commentaire
    nom=duchemol
    prenom=machin
    email=machin.duchemol@foo.com
    L'utilisation des fichiers de properties est très simple. Elle se fait par l'intermédiaire de la classe java.util.Properties.

    Ecriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Properties props = new Properties();
    props.setProperty("nom", "duchemol");
    props.setProperty("prenom", "machin");
    props.setProperty("email", "machin.duchemol@foo.com");
     
    OutputStream output = new FileOutputStream("/path/to/your/file.properties");
    props.store(output, "Ceci est un commentaire");
    Lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    InputStream input = new FileInputStream("/path/to/your/file.properties");
    Properties props = new Properties();
    props.load(input);
     
    String nom = props.getProperty("nom");
    String prenom = props.getProperty("prenom");
    String email = props.getProperty("email");
    Bon courage

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Ca me plait bien c'est simple et adapté à mon besoin.
    Merci

  7. #7
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    ca marche pas j'ai un erreur <identifier>

    voila le code

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public class AleaJactaEst 
    {public static void main (String []arg) 
    	{int d,t,n,i;
    		int g=1;
    		System.out.println("Alea Jacta Est");
    		do
    		{
    			t=0;
    			System.out.print("Combien de dés ?");
    		n=Lire.i();
     
    		for (i=1;i<=n;i++){
     
    			d=LANCE();
     
    		t=t+d;}
     
    	System.out.println ("Resultat du lancé : "+t);	
    	System.out.print("Continuer ?1=oui; 2=non");
    		g=Lire.i();}
    	while (g==1);
    	}
     
     
    	Properties props = new Properties();
    props.setProperty("nom", "duchemol");
    props.setProperty("prenom", "machin");
    props.setProperty("email", "machin.duchemol@foo.com");
     
    OutputStream output = new FileOutputStream("/path/to/your/file.properties");
    props.store(output, "Ceci est un commentaire");
     
     
    public static int LANCE()
    { return(int) (Math.random()*6+1);}
     
    }
    D'avance merci de votre aide

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vous avez mis votre code en dehors de la méthode :/

  9. #9
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Merci,

    ca ne marche toujours pas

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import java.io.*;
    import java.util.*;
     
    public class AleaJactaEst 
    {public static void main (String []arg) 
    	{int d,t,n,i;
    		int g=1;
    		System.out.println("Alea Jacta Est");
    		do
    		{
    			t=0;
    			System.out.print("Combien de dés ?");
    		n=Lire.i();
     
    		for (i=1;i<=n;i++){
     
    			d=LANCE();
     
    		t=t+d;
     
    		Properties props = new Properties();
    props.setProperty("nom",t);
     
    OutputStream output = new FileOutputStream("file.properties");
    props.store(output, "Ceci est un commentaire");
    		}
     
    	System.out.println ("Resultat du lancé : "+t);	
    	System.out.print("Continuer ?1=oui; 2=non");
    		g=Lire.i();}
    	while (g==1);
    	}
     
    public static int LANCE()
    { return(int) (Math.random()*6+1);}
     
    }

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Schim Voir le message
    Merci,

    ca ne marche toujours pas
    Pourriez vous préciser "ne marche pas" ?

  11. #11
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pourriez vous préciser "ne marche pas" ?
    [IMG] Uploaded with ImageShack.us[/IMG]

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme le dit le message, setProperty attends que vous lui passiez deux String et vous tentez de lui passer une String et un int.

  13. #13
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    comme le dit le message, setProperty attends que vous lui passiez deux String et vous tentez de lui passer une String et un int.
    Je dois transformer mon int en string ?

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben oui

  15. #15
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    maintenant j'ai ca :

    [IMG] Uploaded with ImageShack.us[/IMG]

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Vous devez mettre un try/catch autour de votre écriture, pour gérer l'exception IOException.

    PS: pourriez vous copier / coller vos message d'erreur plutot que de faire une capture d'écran de votre console?

  17. #17
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Vous devez mettre un try/catch autour de votre écriture, pour gérer l'exception IOException.

    PS: pourriez vous copier / coller vos message d'erreur plutot que de faire une capture d'écran de votre console?
    Je ne sais pas faire ça.

  18. #18
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Je comprend pas pourquoi mais ca marche :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    import java.io.*;
    import java.util.*;
     
    public class AleaJactaEst 
    {public static void main (String []arg) 
    	{int d,t,n,i;
    	String p;
     
    		int g=1;
    		System.out.println("Alea Jacta Est");
    		do
    		{
    			t=0;
    			System.out.print("Combien de dés ?");
    		n=Lire.i();
     
    		for (i=1;i<=n;i++){
     
    			d=LANCE();
     
    		t=t+d;
    		p=Integer.toString(t);
    		Properties props = new Properties();
    		try { 
    props.setProperty("nom",p);
     
    OutputStream output = new FileOutputStream("file.properties");
    props.store(output, "Ceci est un commentaire");
    		} catch (Exception e) { 
    System.out.println("Erreur Exception" + e); 
    } 
     
    	System.out.println ("Resultat du lancé : "+t);	
    	System.out.print("Continuer ?1=oui; 2=non");
    		g=Lire.i();}}
    	while (g==1);
     
    	}
     
    public static int LANCE()
    { return(int) (Math.random()*6+1);}
     
    }
    Juste un probleme c'est que seule la derniere valeur est sauvegardée.

  19. #19
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 14
    Par défaut
    Et voila, plus qu'a faire une petite interface graphique...

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    import java.io.*;
    import java.util.*;
     
    public class AleaJactaEst 
    {public static void main (String []arg) 
    	{int d,t,n,i,h;
    	String p,c,k;
    		h=0;		
    		int g=1;
    		Properties props = new Properties();
    		System.out.println("Alea Jacta Est");
    		do
    		{
    			t=0;
    			System.out.print("Caracteristique ?");
    		c=Lire.S();
    			System.out.print("Combien de dés ?");
    		n=Lire.i();
     
    		for (i=1;i<=n;i++){
     
    			d=LANCE();
    			System.out.println("lance "+i+" : "+d);	
    		t=t+d;
    		}
    		p=Integer.toString(t);
     
     
    		try { 
    h=h+1;
    props.setProperty(c,p);
     
    OutputStream output = new FileOutputStream("file.properties");
    props.store(output, "Ceci est un commentaire");
    		} catch (Exception e) { 
    System.out.println("Erreur Exception" + e); 
    }
     
    	System.out.println ("Resultat du lancé : "+t);	
    	System.out.print("Continuer ?1=oui; 2=non");
    		g=Lire.i();}
    	while (g==1);
     
    	}
     
    public static int LANCE()
    { return(int) (Math.random()*6+1);}
     
    }

    Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2006, 17h50
  2. [C++.NET] Idee pour sauvegarde de variables
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 02/05/2006, 16h03
  3. [Session]Sauvegarde des variables de sessions en base
    Par sheura dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 03/01/2006, 10h19
  4. Réponses: 3
    Dernier message: 11/11/2005, 12h59
  5. Réponses: 5
    Dernier message: 21/10/2005, 11h48

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