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. #21
    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 beaucoup pour tes explications, je sais pas pourquoi je m'obstinais à vouloir comparer un int avec un tableau de int. Sinon oui tu as parfaitement raison c'est plutôt true que je devrai mettre

    voici cette partie du code et qui commence à ressembler à quelque chose de 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
    25
    26
    27
    28
    29
    30
    31
     
     
    	public boolean estSurLigne(int _valeur, int _ligne) {
     
    		for(int i=0; i<9; i++)		
    			if(tab1[_ligne][i] == _valeur )
    		        {
    		            System.out.println("cette valeur est déjà présente sur cette ligne");
    		            return true;
    		        }
    		return false;
     
     
    		}
     
     
     
    	public boolean estSurColonne(int _valeur, int _colonne) {
     
    		for(int j=0; j<9; j++)
    			if(tab1[_colonne][j] == _valeur )
            {
                System.out.println("cette valeur est déjà présente sur cette colonne");
                return true;
            }
    		return false;
     
    			}
    	public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
     
    	}

  2. #22
    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
    Ouf !!! Y'a plus qu'un ] en trop qui se ballade et puis c'est bon, pour cette partie.
    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. #23
    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
    Cool, bon maintenant il me reste à créer la fonction estDansLeBloc et imprimerGrille pour cette classe.

  4. #24
    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
    J'ai essayé de trouver des infos sur comment répondre à la 2.6 mais j'ai rien trouvé.
    Je ne comprend pas comment la fonction est sensé vérifier dans le bloc si la valeur est déjà présente.
    2.6-La fonction estDansLeBloc (int _valeur, int _ligne, int _colonne) qui vérifie si la valeur _valeur est incluse dans le bloc contenant l’intersection de la ligne _ligne et de la colonne _colonne.
    Ouais, c'est sûr que le bloc, ce n'est pas très clair : on ne nous dt pas ce que c'est. Alors, c'est vrai que les sudokus 9 par 9, on les représente par 9 blocs de 3 par 3. Est-ce de ces blocs qu'on parle ?

    Si c'est le cas, il faut d'abord chercher le bloc. Puis faire une double boucle imbriquée pour parcourir ligne et colonne bornées par le bloc et tester chaque case pour savoir si elle est égale à _valeur.

    Pour chercher le "numéro" de bloc, tu peux te base sur la division entière : ligne / 3 te donne le numéro de ligne de bloc par exemple (ainsi 0/3 dont 0, 1/3 donne 0, 2/3 sonne 0, 3/3 donne 1, 4/3 donne 1, 5/3 donne 1, 6/3 donne 2, 7/3 donne 2, 8/3 donne 2). Pareil pour les colonnes

    Ensuite, pour borner le for, il faut déterminer la première ligne (ou colonne) du bloc qui est 3 * numéro de ligne de bloc et la suivant de la dernière, qui la première plus trois. Idem pour les colonnes. Maintenant tu peux faire tes boucles.
    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.

  5. #25
    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
    Après avoir relu je me demande s'il ne veulent pas plutôt que la fonction détermine si la case à l'intersection d'une colonne et d'une ligne contient la valeur en question.

  6. #26
    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
    Après avoir relu je me demande s'il ne veulent pas plutôt que la fonction détermine si la case à l'intersection d'une colonne et d'une ligne contient la valeur en question.
    C'est ce que j'ai pensé aussi au début, mais c'est vraiment trivial ça, et pourquoi parler de "bloc qui contient" l'intersection, et pas d'intersection tout court ?
    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. #27
    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 vais envoyer un mail au tutorat pour voir ce qu'ils me disent.
    Histoire de comprendre, surtout que j'ai des dates à respecter et si je commence à bloquer à cause de la consigne ça risque de ne pas le faire.

  8. #28
    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 attendant une réponse je vais continuer avec la suite.
    La fonction imprimerGrille, comment je peux faire pour afficher la grille sous ce format ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    |   4 3 | 7     | 9   8 | 
    |     5 |   3   |       | 
    |   1   |       | 3     | 
    ----------------------- 
    | 6     |   2 7 |       | 
    | 4   7 |       | 1   3 | 
    |       | 5 4   |     9 | 
    ----------------------- 
    |     2 |       |   3   | 
    |       |   5   | 4     | 
    | 5   4 |     1 | 2 6   |

  9. #29
    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 fonction imprimerGrille, comment je peu faire pour afficher la grille sous ce format ?]
    Des boucles, des System.out.println() (ou préparer la chaîne totale avec un StringBuilder et l'afficher à la fin), et des caractères (espace, pipe, tiret et chiffres de 0 à 9). A l'époque de mes débuts (je parle d'une époque que les moins de 30 ans ne peuvent pas connaître ), je faisais tout çà d'abord sur papier à petits carreaux. Ça me permettait de voir le nombre de caractères (en particulier pour les lignes, ou les colonnes) et de voir comment écrire mes boucles.
    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. #30
    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 vais essayer d'utiliser un StringBuffer, ce sera une première fois. C'est une bonne idée de le faire sur papier ça permet aussi de le visualiser plus clairement.
    Par contre je comprend pas trop pourquoi il faut que je fasse des boucles. Il ne suffit pas de faire comme ça?
    C'est seulement pour exemple, j'ai mis seulement pour la première ligne du tableau.
    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
     
    public string imprimerGrille(){
    	String s1 =  "|" ;  
    	String s2 =  " " ;  
    	String s3 = "-----------------------";
    	String s4 = "1";
    	String s5 = "2";
    	String s6 = "3";
    	String s7 = "4";
    	String s8 = "5";	
    	String s9 = "6";	
    	String s10 = "7";	
    	String s11 = "8";	
    	String s12 = "9";	
    	StringBuilder sb =  new StringBuilder() ;  
    	sb.append(s1).append(s2).append(s7).append(s6).append(s1).append(s10).append(s2).append(s2).append(s1).append(s12).append(s2).append(s11).append(s1) ;  
    	String s13 = sb.toString() ;
    }
    }

  11. #31
    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 vais essayer d'utiliser un StringBuffer,
    StringBuilder, pas StringBuffer.

    Citation Envoyé par while.dede Voir le message
    Par contre je comprend pas trop pourquoi il faut que je fasse des boucles. Il ne suffit pas de faire comme ça?
    Parce que là, ça affiche toujours la même grille (en plus, tu créés pleins de variables !). Alors que le but de la méthode c'est d'afficher le contenu du tableau grille. Et pour le faire, tu ne vas pas de taper 209 append() explicites (d'ailleurs pour afficher la grille en statique, on peut faire une chaîne directement, sans StringBuilder explicite, ni aucun append() ) !

    Le but c'est d'afficher une grille, n'importe quelle grille, donc le tableau... pour pouvoir jouer et voir ce qu'on a joué et là où il reste des cases à remplir !
    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. #32
    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
    D'accord, merci. Je vais te déranger encore mais tu n’aurais pas un lien d'un cours ou d'un topic ou je pourrai voir un exemple, car c'est le première fois que j'ai à faire ça et j'ai rien du genre dans mes cours.

  13. #33
    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
    De tutoriel, non, je n'en connais pas.

    Je peux te donner un exemple :

    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
    public static void main(String[] args) {
     
    		int[][] array = new int[][] { 
    				 { 0, 1, 2 },
    				 { 1, 2, 2 },
    				 { 1, 0, 2 } };
     
    		StringBuilder builder = new StringBuilder();
    	    for(int i=0; i<array.length; i++) {
     
    	    	if ( i>0 ) {
    	    		builder.append("------------\n");
    	    	}
    	    	for(int j=0; j<array[i].length; j++) {
     
    	    		builder.append(" ");
    	    		if ( j>0 ) builder.append("| ");
    	    		switch( array[i][j] ) {
    	    		case 0:
    	    			builder.append(' ');
    	    			break;
    	    		case 1:
        				builder.append('x');
    	    			break;
    	    		case 2:
    	    			builder.append('o');
        				break;
    	    		}  
     
    	    	}
        		builder.append("\n");
     
    	    }
     
    	    System.out.println(builder);
     
     
     
    	}
    Exécute-le, regarde ce qu'il fait, regarde comment c'est fait, inspire-t-en.
    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. #34
    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 beaucoup c'est ce qu'il me fallait, je vais faire comme ça.
    Au fait j'ai reçu la réponse du tuteur concernant la méthode estDansLeBloc et apparemment c'est simplement vérifier que la case à l'intersection de la colonne et de la ligne ne contient pas la valeur.
    Du coup j'ai fait ç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
     
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    		for(int i=0; i<9; i++)
    		{
    			for(int j=0; j<9; j++)
    			{
    				if(tab1[_ligne][i] == _valeur ){
    				if(tab1[_colonne][j] == _valeur ){
    					System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    		            return true;
    			}
    				}
    				  }
    			}
    		}

  15. #35
    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 beaucoup c'est ce qu'il me fallait, je vais faire comme ça.
    Au fait j'ai reçu la réponse du tuteur concernant la méthode estDansLeBloc et apparemment c'est simplement vérifier que la case à l'intersection de la colonne et de la ligne ne contient pas la valeur.
    Du coup j'ai fait ç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
     
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    		for(int i=0; i<9; i++)
    		{
    			for(int j=0; j<9; j++)
    			{
    				if(tab1[_ligne][i] == _valeur ){
    				if(tab1[_colonne][j] == _valeur ){
    					System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    		            return true;
    			}
    				}
    				  }
    			}
    		}
    C'est pas vraiment ce que ça fait ça : si la valeur est dans la ligne _ligne, et aussi dans la ligne _colonne, alors la valeur est trouvée.
    Par exemple : 9 serait trouvé dans la grille suivante, pour des index de 0 inclus à 9 exclus avec _ligne = 1 et _colonne = 2 (ou _ligne = 2 et _colonne = 7) :
    Nom : 180px-Sudoku-by-L2G-20050714.svg.png
Affichages : 323
Taille : 9,8 Ko

    Le premier indice est toujours celui de la ligne, donc _colonne devrait être dans le second. Et pour tester l'intersection, il suffit de faire (sans aucune boucle) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( tab1[_ligne][_colonne] == _value )
    en théorie on devrait avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean estDansLeBloc(int _value, int _ligne, int _colonne) {
        return tab1[_ligne][_colonne] == _value;
    }
    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. #36
    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 en corrigeant le petit soucis ligne colonne et en enlevant la boucle, ça donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    		if ( tab1[_ligne][_colonne] == _valeur ){
    					System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    					return tab1[_ligne][_colonne] == _valeur;
    			}
    				}
    				  }
    Concernant la méthode imprimerGrille je me bute à un petit soucis qui concerne le "|" et les "---".
    Je voudrais que toute les trois cases un "|" soit mit et pas à chaque case.

    La partie du code qui gère l'insertion des pipe est celle-ci :
    j'ai modifier le paramètre j>0 en mettant j>3, ça marche pour les trois premières cases, par contre après il recommence à me le remettre à chaque case.
    Par conséquent je me suis dit que cela ne viens pas e cette partie, car si je modifie j>0 je ne fais que lui dire de commencer après trois cases à me mettre des pipe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( j>0 ) builder.append("|");
    Cela viendrait il plutôt du for?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int j=0; j<tab1[i].length; j++)

  17. #37
    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 en corrigeant le petit soucis ligne colonne et en enlevant la boucle, ça donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    		if ( tab1[_ligne][_colonne] == _valeur ){
    					System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    					return tab1[_ligne][_colonne] == _valeur;
    			}
    				}
    				  }
    Mais...pourquoi ajouter if ( tab1[_ligne][_colonne] == _valeur ){ ?

    return tab1[_ligne][_colonne] == _valeur est une expression booléenne, et sa valeur est vraie si si elle est vraie, et fausse si elle est fausse. y'a pas besoin de tester si elle est vraie en plus.

    En plus, ton code ne compile pas : comme le test (if) peut être faux, on devrait avec un return pour ce cas là.

    Donc ton code corrigé serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    		if ( tab1[_ligne][_colonne] == _valeur ){
    					System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    					return tab1[_ligne][_colonne] == _valeur;
    			}
                    else {
                        return false;        // la valeur à l'intersection n'est pas _valeur
                    }
    				}
    En simplifié, ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    si ( A est vrai ) {
           return A
    }
    else return faux;
    Donc si A n'est pas vrai, on ne retourne pas A, mais faux. Ou, autrement dit, si A est faux, on retourne faux.
    Donc je résumé :
    • si A est vrai on retourn vrai
    • si A est faux on retourne faux


    Donc on retourne bien A !

    Donc on peut écrire simplement ce que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean estDansLeBloc(int _value, int _ligne, int _colonne) {
        return tab1[_ligne][_colonne] == _value;
    }
    Tu aurais pu écrire, si tu préfères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public boolean estDansLeBloc(int _valeur, int _ligne, int _colonne){
    	if ( tab1[_ligne][_colonne] == _valeur ){
    		System.out.println("cette valeur est déjà présente à l'intersection de cette ligne et de cette colonne");
    		return true;
    	}
            else {
                    return false;        // la valeur à l'intersection n'est pas _valeur
            }
    }
    Au moins, il n'y a pas de redondance, et ce n'est pas emberlificoté.



    Citation Envoyé par while.dede Voir le message
    Concernant la méthode imprimerGrille je me bute à un petit soucis qui concerne le "|" et les "---".
    Je voudrais que toute les trois cases un "|" soit mit et pas à chaque case.

    La partie du code qui gère l'insertion des pipe est celle-ci :
    j'ai modifier le paramètre j>0 en mettant j>3, ça marche pour les trois premières cases, par contre après il recommence à me le remettre à chaque case.
    Par conséquent je me suis dit que cela ne viens pas e cette partie, car si je modifie j>0 je ne fais que lui dire de commencer après trois cases à me mettre des pipe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( j>0 ) builder.append("|");
    Cela viendrait il plutôt du for?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int j=0; j<tab1[i].length; j++)
    Ne cherche pas modifier directement le code pour l'exemple que je t'ai donné. Utilise le pour comprendre les mécanismes.

    Je te donne un canevas pour afficheGrille(), si tu veux - Là j'ai juste enlevé les boucles

    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
    public static void main(String[] args) {
     
    		int[][] grille = new int[9][9];
     
    		StringBuilder sb = new StringBuilder();
    		int i=0; // boucle
    		    int ki = i; // boucle ki 
    				sb.append("| ");
    				int j=0; // boucle j 
    					for (int kj = j; kj < j + 3; kj += 1) {
    						if (grille[ki][kj] != 0)
    							sb.append(grille[ki][kj]);
    						else
    							sb.append(" ");
    						sb.append(" ");
    					}
    					sb.append("| ");
    				// fin boucle j
    				sb.append("\n");
    			// fin boucle ki
    			if (i == 3 || i == 0) {
    				// append ligne horizontale
    			}
    		// fin boucle i
     
    		// affichage
    		System.out.println(sb);
     
    	}
    Et là, çà affiche une ligne (de chiffres) :

    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
    public static void main(String[] args) {
     
    		int[][] grille = new int[9][9];
     
    		StringBuilder sb = new StringBuilder();
    		int i = 0;
    		int ki = 0;
    		sb.append("| ");
    		for (int j = 0; j < grille[i].length; j += 3) {
    			for (int kj = j; kj < j + 3; kj += 1) {
    				if (grille[ki][kj] != 0)
    					sb.append(grille[ki][kj]);
    				else
    					sb.append(" ");
    				sb.append(" ");
    			}
    			sb.append("| ");
    		}
    		sb.append("\n");
    		System.out.println(sb);
    	}
    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.

  18. #38
    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 beaucoup pour tout tes conseils, c'est du costaud je suis en train d'essayer d'appliquer ce que j'ai compris des exemples que tu m'as donné, malgré tout j'avance très difficilement.
    J'ai une petite question à propos du kj et ki je comprend pas trop ce qu'ils font au juste.

  19. #39
    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 j'avais pas vu mais tu me l'explique dans le premier exemple sans les boucles

  20. #40
    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 beaucoup pour tout tes conseils, c'est du costaud je suis en train d'essayer d'appliquer ce que j'ai compris des exemples que tu m'as donné, malgré tout j'avance très difficilement.
    J'ai une petite question à propos du kj et ki je comprend pas trop ce qu'ils font au juste.
    Voici ce que j'obtiens avec le programme complet (ça correspond à la grille que j'ai mise dans le message plus haut, et j'ai mis des . pour les cases vides :

    | 5 3 . | . 7 . | . . . | 
    | 6 . . | 1 9 5 | . . . | 
    | . 9 8 | . . . | . 6 . | 
    -------------------------
    | 8 . . | . 6 . | . . 3 | 
    | 4 . . | 8 . 3 | . . 1 | 
    | 7 . . | . 2 . | . . 6 | 
    -------------------------
    | . 6 . | . . . | 2 8 . | 
    | . . . | 4 1 9 | . . 5 | 
    | . . . | . 8 . | . 7 9 | 
    On voit qu'il y a des groupes de 3 colonnes et 3 lignes. Donc, au lieu de faire une simple boucle sur les lignes et une sur les colonnes, je fais une boucle sur un groupe de lignes (boucle i), puis une seconde sur les lignes du groupe (ki), et pareil pour les colonnes (j sur les groupes de colonnes, et kj sur les colonnes dans le groupe).
    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