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

Entrée/Sortie Java Discussion :

Lecture et écriture de fichier de sauvegarde pour un jeu.


Sujet :

Entrée/Sortie Java

  1. #61
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Sinon concernant a classe test j'ai fait ceci :
    J'ai vraiment des difficultés avec les stream, c'est vrai que c'est tout nouveau pour moi, mais bon il faut que j'y arrive car je dois terminer le programme pour lundi
    La fonction charger jeu:
    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
     
    package training;
    import java.util.Scanner;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    public class Brouillon {
    	@SuppressWarnings("resource")
    	public static void main(String[] args)throws FileNotFoundException, IOException {		 		    
     
    		FileInputStream partie12 = new FileInputStream("c:/sudoku/partie12.txt");
            String inputStreamString = new Scanner(partie12,"UTF-8").useDelimiter("\\A").next();
            System.out.println(inputStreamString);
        } 
     
     
    	}
    et j'essaye de faire celle qui sauvegarde la partie mais je dois avouer que je patauge sévèrement.
    voici 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
     
    package training;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class Brouillon2 {
     
     
    		public void savePartie()throws FileNotFoundException, IOException{
     
    			FileOutputStream partie1 = null;
    			partie1 = new FileOutputStream(new File("partie 1.txt"));
     
     
     
     
    		}
    	}

  2. #62
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Hum, c'est plus que patauger, y a rien que l'ouverture des flux dans tes codes !

    Pour écrire dans un fichier texte, ce sera plus simple d'utiliser un Writer.

    En Java 7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void sauver(int[][] tableau, String cheminDuFichier) throws IOException { // par exemple
     
       try( BufferedWriter writer = new BufferedWriter(new FileWriter(new File(cheminDuFichier)))) { // cette syntaxe te permet d'éviter d'avoir à appeler explicitement close(), sinon il faut le faire absolument
     
       // ici tu fais une double boucle sur le tableau et tu l'écris
     
       }
    }
    En Java 8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void sauver(int[][] tableau, String cheminDuFichier) throws IOException {
       try( BufferedWriter writer = Files.newBufferedWriter(Paths.get(cheminDuFichier))) {
       // ici tu fais une boucle sur le tableau et tu l'écris
       }
    }
    Pour écrire :

    • Pour une coordonnée (i ou j des boucles) : writer.write(String.valueOf(i));
    • Une case du tableau : writer.write(String.valueOf(tableau[i][j]));
    • Une espace : writer.write(" ");

    Dans la double boucle, tu écris i, tu écris une espace, tu écris j, tu écris une espace, tu écris tableau[i][j], tu écris une espace. Il ne faut le faire que pour les cases qui ne contiennent pas 0 : if ( tableau[i][j]!=0) {...

    Pour la lecture, à l'inverse, utilise un Scanner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static int[][] lire(String cheminDuFicher) throws IOException {
     
         int[][] tableau = new int[9][9];
     
         try( Scanner scanner = new Scanner(new File(cheminDuFicher))) {
     
              // ici tu boucles simplement (while scanner.hasNextInt() et tu lis chaque case par trois avec scanner.hasNextInt() et scanner.nextInt(), successivement, i, j et valeur, et tu mets dans la case du tableau tableau[i][j]=valeur
     
         }
         return tableau;
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #63
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Merci de ta réponse, dès que j'arrive à redémarrer mon ordinateur je m'y lance, car évidement il a planté quand j'en ai besoin
    Voilà le code pour écrire, que j'ai fait en suivant tes conseils, j'espère qu'il soit correct.
    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
     
    public static void sauver(int[][] tab1, String cheminDuFichier) throws IOException { 
     
    		   try( BufferedWriter writer = new BufferedWriter(new FileWriter(new File(cheminDuFichier)))) { 
     
    		   // ici tu fais une double boucle sur le tableau et tu l'écris
    			   for (int i = 0; i < tab1.length; i++) {
    				   for (int j = 0; j < tab1.length; j++) {
    					   if ( tab1[i][j]!=0) {
    					   writer.write(String.valueOf(i));
    					   writer.write(" ");
    					   writer.write(String.valueOf(j));
    					   writer.write(" ");
    					   writer.write(String.valueOf(tab1[i][j]));
    					   writer.write(" ");
    				   }}
     
    		   }
    		}
     
     
     
     
    	}

  4. #64
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Par contre je un peu de mal à comprendre cette partie:
    Si cela ne te dérange pas pourrais-tu m'en dire un peu plus sur ce que ça fait.
    dois-je faire comme ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i = 0; i < tab1.length; i++) {
    				   for (int j = 0; j < tab1.length; j++) {
    					   span style="font-family: monospace";
    				   }}
    return tab1;

  5. #65
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Relis le code du post 62 : le "span style="font-family: monospace";... c'était juste un bug dans le rendu du commentaire à cause de la balise [c] qui était de dedans. Sinon, il y avait aussi la javadoc de Scanner pour savoir comment s'en servir.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #66
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message
    Merci de ta réponse, dès que j'arrive à redémarrer mon ordinateur je m'y lance, car évidement il a planté quand j'en ai besoin
    Voilà le code pour écrire, que j'ai fait en suivant tes conseils, j'espère qu'il soit correct.
    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
    public static void sauver(int[][] tab1, String cheminDuFichier) throws IOException { 
    		 
    		   try( BufferedWriter writer = new BufferedWriter(new FileWriter(new File(cheminDuFichier)))) { 
    		 
    		   // ici tu fais une double boucle sur le tableau et tu l'écris
    			   for (int i = 0; i < tab1.length; i++) {
    				   for (int j = 0; j < tab1.length; j++) {
    					   if ( tab1[i][j]!=0) {
    					   writer.write(String.valueOf(i));
    					   writer.write(" ");
    					   writer.write(String.valueOf(j));
    					   writer.write(" ");
    					   writer.write(String.valueOf(tab1[i][j]));
    					   writer.write(" ");
    				   }}
    		 
    		   }
    		}
    					 		    
    				    
    		
    		
    	}
    Je t'ai déjà fait une remarque au sujet de la seconde boucle j (que j'ai surlignée). Ce n'est pas parce que ça fonctionne par circonstance qu'il faut laisser ça comme ça : ça donne simplement l'impression que tu ne comprends pas le code que tu écris.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #67
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Ah oui c'est vrai j'avais oublié, voici le code avec cette correction.
    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
     
    package training;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    //sauvegarde fichier
    public class Brouillon2 {
     
     
    	public static void sauver(int[][] tab1, String cheminDuFichier) throws IOException { 
     
    		   try( BufferedWriter writer = new BufferedWriter(new FileWriter(new File(cheminDuFichier)))) { 
     
    		   // ici tu fais une double boucle sur le tableau et tu l'écris
    			   for (int i = 0; i < tab1.length; i++) {
    				   for (int j = 0; j < tab1[i].length; j++) {
    					   if ( tab1[i][j]!=0) {
    					   writer.write(String.valueOf(i));
    					   writer.write(" ");
    					   writer.write(String.valueOf(j));
    					   writer.write(" ");
    					   writer.write(String.valueOf(tab1[i][j]));
    					   writer.write(" ");
    				   }}
     
    		   }
    		}
     
     
     
     
    	}}

    Sinon pour le bug je me disais bien qu'il n'y avais pas de rapport avec le scanner, mais comme mes connaissances sont encore très limitées, je m’étais dit que ça devais servir à quelque chose.

  8. #68
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Concernant la fonction lecture du fichier, où tu me dis:
    // ici tu boucles simplement (while scanner.hasNextInt() et tu lis chaque case par trois avec scanner.hasNextInt() et scanner.nextInt(), successivement, i, j et valeur, et tu mets dans la case du tableau tableau[i][j]=valeur

    Donc de ce que j'ai compris le while(scanner.hasNextInt()) { vérifie s'il existe un token.
    Dans le cas ou il en existe un il l'enregistre, mais comment je fait pour le mettre ensuite dans le tableau dans le bon ordre?

  9. #69
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message
    Concernant la fonction lecture du fichier, où tu me dis:



    Donc de ce que j'ai compris le while(scanner.hasNextInt()) { vérifie s'il existe un token.
    çà vérifie qu'il y a quelque chose dans le buffer et que ce "quelque chose" peut être lu (converti) en int.

    Citation Envoyé par while.dede Voir le message
    Dans le cas ou il en existe un il l'enregistre, mais comment je fait pour le mettre ensuite dans le tableau dans le bon ordre?
    Comme le fichier écrit est censé être une suite de triplets de x, y et z, séparés par des espaces, où x est la ligne, y est la colonne et z la valeur, quand tu relis ces int, tu va les relire dans le même ordre qu'ils ont été écrits, donc x, y puis z : donc (comme je le disais), il suffit de faire tab1[x][y] = z.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #70
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Donc, comme ça?
    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
     
    public class Brouillon {
    //lecture fichier
    	public static int[][] lire(String cheminDuFicher) throws IOException {
     
    	     int[][] tab1 = new int[9][9];
     
    	     try( Scanner scanner = new Scanner(new File(cheminDuFicher))) {
    	    	 while (scanner.hasNextInt()){
     
    					   scanner.hasNextInt(String.valueOf(x));
    					   scanner.nextInt(String.valueOf(x));
    					   scanner.hasNextInt(String.valueOf(y));
    					   scanner.nextInt(String.valueOf(y));
    					   scanner.hasNextInt(String.valueOf(z));
    					   scanner.nextInt(String.valueOf(z));
     
     
     
    	     }
     
    	     return tab1;
     
    	}}}

  11. #71
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Est-ce que ça compile çà ? Où es tu allé chercher ça : scanner.nextInt(String.valueOf(x)); ? Pour récupérer le résultat d'une méthode dans une variable x, on écrit int x = scanner.nextInt();.
    De deux choses l'une, ou tu comptes sur le fait que le fichier soit correct (donc bien une suite de triplets), et il te suffit de faire une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ( scanner,hasNextInt() ) { // il y a au moins un triplet à lire
       int x = scanner.nextInt();
       int y = scanner.nextInt();
       int z = scanner.nextInt();
       tab1[x][y]=z;
    }
    (c'est tout de même pas sorcier çà).

    Ou alors tu veux un peu blinder :
    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
    while( scanner.hasNextInt() ) { // il y a au moins un triplet à lire
     
        int x = scanner.nextInt(); // on lit le int qui correspond au hasNextInt() qu'on fait dans le while
     
        if ( scanner.hasNextInt() ) { // il y a un autre int à lire
           int y = scanner.nextInt();
           if( scanner.hasNextInt() ) { // il y a encore un autre int à lire
               int z = scanner.nextInt();
               // on a lu x, y et z
               tab1[x][y]=z; // on met la valeur dans le tableau
           }
           else { // il y a 2 int sans le troisième
                  throw new IOException("Bad file format: missing z."); // ou tout autre message que tu veux
           }
        }
        else {
           // il y a un x qui se ballade tout seul
           throw new IOException("Bad file format: missing y and z."); // ou tout autre message que tu veux
        }
     
     
    }
    Et c'est un algorithme de base, ça aussi. Soit tu es vraiment très distrait et il te faut te concentrer, soit il faut revoir les bases et les apprendre : parce qu'entre le truc de l'autre fois (avec les stats si ma mémoire est bonne) et tout ce qu'on a fait là, tout ça est bien laborieux, pour quelques parcours de tableau, ou lecture de scanner, et quelques tests basiques.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #72
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Oui tu as raison, j'ai énormément de difficultés à me concentrer, j'ai eu un problème familiale et malheureusement ça ce répercute sur ce que je fais.
    J'essai de faire un peu plus attention, mais c'est pas facile.
    Je te remercie de ta patience et de l'aide pour ce programme.

    Ps: Je vais quand même aller réviser mes bases par sécurité, mais il faut juste que je termine ce programme avant.

  13. #73
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message
    Oui tu as raison, j'ai énormément de difficultés à me concentrer, j'ai eu un problème familiale et malheureusement ça ce répercute sur ce que je fais.
    J'essai de faire un peu plus attention, mais c'est pas facile.
    Je te remercie de ta patience et de l'aide pour ce programme.
    J'en suis désolé pour toi. Si tu peux remettre à plus tard ton exercice, je te le conseille alors.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #74
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Je te remercie beaucoup, malheureusement j'arrive à la fin de mon cours d'initiation sur java et il faut que j'envoi cet exercice ainsi qu'un autre avant la fin, en plus j'ai perdu pas mal de temps, donc je me retrouve un peu juste au niveau des dates.

  15. #75
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message
    Je te remercie beaucoup, malheureusement j'arrive à la fin de mon cours d'initiation sur java et il faut que j'envoi cet exercice ainsi qu'un autre avant la fin, en plus j'ai perdu pas mal de temps, donc je me retrouve un peu juste au niveau des dates.
    Mais c'est un cours officiel avec sanction à la fin ? Tu ne peux pas les contacter pour voir s'il n'y a pas de session de rattrapage ou autre ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  16. #76
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    En fait le cours est structuré autour de plusieurs exercices notés ou pas, jusqu'à présent j'ai réussis à tout rendre dans les temps sans problème, mais vu que j'ai prit du retard, j'ai du étudier un peu plus vite les dernières leçon pour pouvoir avoir les derniers exercices et si je ne rend pas tout les exos dans les temps, le cours n'est pas validé.

    Non malheureusement il n'y a pas de session de rattrapage.

  17. #77
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Je viens de mettre dans la classe main les différentes fonctions, il me reste encore à faire les différents appels de fonction et à voir pour l’héritage et à corriger les erreurs.

    La classe test est un peu longue:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
     
    public class Test {
    	static Scanner sudoku = new Scanner(System.in);
     
    	public static void main(String[] args) {
     
    		int Sudoku = 0;
    		int choix = 0;
     
    		String afficheur1 = null;
     
    		String afficheur2 = null;
     
    		String afficheur3 = null;
     
    		System.out
    				.println("*************************************Sudoku*********************************** ");
    		System.out
    				.println("Bienvenue dans le programme de Sudoku, ce programme ...");
    		System.out.println(" ");
    		System.out.println("Veuillez choisir un des choix suivants:");
    		System.out.println("1. Charger jeu.");
    		System.out.println("2. Jouer Sudoku.");
    		System.out.println("3. Quitter.");
     
    		Sudoku = sudoku.nextInt();
    		int charger_jeu = 0;
     
    		while (charger_jeu == 0) {
    			System.out.print(" Entrez votre choix : ");
    			afficheur1 = sudoku.nextLine();
    			if (afficheur1 == 1) {
     
    				charger_jeu = 1;
    				choix = 1;
    			} else {
    				charger_jeu = 0;
    			}
    		}
     
    		int jouer_sudoku = 0;
    		while (jouer_sudoku == 0) {
    			System.out.print(" Entrez votre choix : ");
    			afficheur2 = sudoku.nextLine();
    			if (afficheur2 == 2) {
     
    				jouer_sudoku = 1;
    				choix = 2;
    			} else {
    				jouer_sudoku = 0;
    			}
    		}
     
    		int quitter = 0;
    		while (quitter == 0) {
    			System.out.print(" Entrez votre choix : ");
    			quitter = sudoku.nextLine();
    			if (afficheur3 == 3) {
     
    				quitter = 1;
    				choix = 3;
    			} else {
    				quitter = 0;
    			}
    		}
     
    		if (choix == 1) {
    			// Methode chargerJeu
     
    		}
    		if (choix == 2) {
    			// jouerSudoku
    		}
    		if (choix == 3) {
     
    			System.exit(0);
    		}
    	}
     
    	public void chargerJeu(String cheminDuFicher) throws IOException {
     
    		int[][] tab1 = new int[9][9];
     
    		try (Scanner scanner = new Scanner(new File(cheminDuFicher))) {
    			while (scanner.hasNextInt()) {
    				int x = scanner.nextInt();
    				int y = scanner.nextInt();
    				int z = scanner.nextInt();
    				tab1[x][y] = z;
     
    			}
     
    			return tab1;
     
    		}
    	}
     
    	public void savePartie(int[][] tab1, String cheminDuFichier)
    			throws IOException {
     
    		try (BufferedWriter writer = new BufferedWriter(new FileWriter(
    				new File(cheminDuFichier)))) {
     
    			// ici tu fais une double boucle sur le tableau et tu l'écris
    			for (int i = 0; i < tab1.length; i++) {
    				for (int j = 0; j < tab1[i].length; j++) {
    					if (tab1[i][j] != 0) {
    						writer.write(String.valueOf(i));
    						writer.write(" ");
    						writer.write(String.valueOf(j));
    						writer.write(" ");
    						writer.write(String.valueOf(tab1[i][j]));
    						writer.write(" ");
    					}
    				}
     
    			}
    		}
     
    	}
     
    	public void jouerSudoku() {
    		String ligne = null;
     
    		String colonne = null;
     
    		String valeur = null;
     
    		int[][] tab1 = new int[9][9];
     
    		int condition_ligne = 0;
     
    		while (condition_ligne == 0) {
    			System.out.print(" Veuillez choisir une ligne:");
     
    			ligne = sudoku.nextLine();
    			if (Integer.parseInt(ligne) > tab1.length) {
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_ligne = 0;
    			}
     
    			else if (Integer.parseInt(ligne) < tab1.length)
     
    			{
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_ligne = 0;
    			}
     
    			else {
     
    				condition_ligne = 1;
     
    			}
     
    		}
     
    		int condition_colonne = 0;
     
    		while (condition_colonne == 0) {
     
    			System.out.print(" Veuillez choisir une colonne:");
     
    			colonne = sudoku.nextLine();
     
    			if (Integer.parseInt(colonne) > tab1.length) {
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_colonne = 0;
    			}
     
    			else if (Integer.parseInt(colonne) < tab1.length)
     
    			{
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_colonne = 0;
    			}
     
    			else {
     
    				condition_colonne = 1;
     
    			}
    		}
    		int condition_valeur = 0;
     
    		while (condition_valeur == 0) {
     
    			System.out.print(" Veuillez choisir une valeur:");
     
    			colonne = sudoku.nextLine();
     
    			if (Integer.parseInt(valeur) > tab1.length) {
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_valeur = 0;
     
    			}
     
    			else if (Integer.parseInt(valeur) < tab1.length)
     
    			{
     
    				System.out
    						.println("Vous devez inserez un nombre compris entre 1 et 9");
     
    				condition_valeur = 0;
    			}
     
    			else {
     
    				condition_valeur = 1;
     
    			}
     
    		}
     
    	}
     
    }

  18. #78
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message

    La classe test est un peu longue:
    C'est ce qu'on te demande de faire. Il manque 2 ou 3 choses (pas de menu Sauvegarde, et pas d'appel de méthode pour les choix 1 et 2...). Par contre, il y a un truc important qui ne vas pas : on t'a demandé de faire une classe Grille qui contient un tableau : c'est cette classe Grille qu'il faut utiliser dans la classe Test, et pas un tableau directement.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #79
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Donc pour faire cela je devrais faire hériter ma classe test de la classe grille, et ensuite modifier dans mes fonction pour utiliser le tab1 de cette dernière.

  20. #80
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par while.dede Voir le message
    Donc pour faire cela je devrais faire hériter ma classe test de la classe grille, et ensuite modifier dans mes fonction pour utiliser le tab1 de cette dernière.
    Pas du tout. Elle doit l'utiliser : Grille grille = new Grille(...) au lieu de int[][] tab1 = new int[...][...]; ! Et après tu appelles les méthodes de Grille, ou lieu de manipuler directement le tableau...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/07/2014, 14h41
  2. [Dvp.NET|Intégré] Lecture et écriture de fichiers INI
    Par tomlev dans le forum Contribuez
    Réponses: 12
    Dernier message: 23/01/2009, 01h15
  3. [Lazarus] Lecture et écriture de fichier Excel
    Par Vazily dans le forum Lazarus
    Réponses: 3
    Dernier message: 19/04/2008, 16h10
  4. [VB6] lecture et écriture de fichier
    Par robert_trudel dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 12/06/2006, 14h06
  5. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30

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