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. #1
    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 Lecture et écriture de fichier de sauvegarde pour un jeu.
    Bonjour à tous, je reviens vers vous avec un nouvel exercice qui me pose problème.
    Voici l'énoncé :

    Votre programme devra être constitué des classes suivantes.

    Case:
    1.1-Attributs: ligne, colonne et valeur.

    1.2-Fonctions: Constructeurs et accesseurs (get et set).

    Grille:
    Attributs :
    2.1-Un tableau à double dimension d’entiers représentant les éléments de la grille.

    2.2-Le constructeur Grille(ArrayList al), qui permet d’initialiser l’objet grille à partir d’un arrayList.

    2.3-La fonction grilleToArrayList(ArrayList al), qui permet de sauvegarder la grille dans un ArrayList.

    2.4-La fonction estSurLigne(int _valeur, int _ligne) qui vérifie si la ligne _ligne comporte la valeur _valeur.

    2.5-La fonction estSurColonne(int _valeur, int _colonne) qui vérifie si la colonne _colonne comporte la valeur _valeur.

    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.

    2.7-La fonction imprimerGrille() qui permet d’afficher la grille selon l’affichage montré ci-dessous.

    Test:
    3.1-Fonction d’affichage du menu qui offre à l’utilisateur les choix suivants:

    3.2-Charger Jeu: cette fonction permet de charger la grille de sudoku du fichier texte, le fichier texte comporte une suite de triplet xyz séparé par des espaces:
    x: numéro de la ligne.
    y: numéro de la colonne.
    z: valeur

    3.3-SauvegarderJeu: cette fonction permet de sauvegarder la grille dans le fichier texte, les cases vides ne sont pas sauvegardées.

    3.4-JouerSudoku : cette fonction permet de jouer au Sudoku, l’utilisateur devra fournir la ligne, la colonne et la valeur à placer; le programme devra vérifier avant tout que la valeur n’existe ni dans la ligne, ni dans la colonne, ni dans le bloc avant de l’insérer dans la grille. Si la valeur est déjà existante, un message d’erreur s’affiche à l’utilisateur.

    3.5-Le programme devra demander à l’utilisateur après chaque placement s’il veut jouer encore.

    3.6-Fonction permettant la lecture du fichier et l’initialisation de la grille.

    3.7-Fonction de sauvegarde de la grille dans un fichier texte.

    Autres fonctions que vous jugez pertinentes.


    *************************************Sudoku***********************************
    Bienvenue dans le programme de Sudoku, ce programme ...

    Veuillez choisir un des choix suivants:
    1. Charger jeu.
    2. Jouer Sudoku.
    3. Quitter.
    Votre choix: 1
    Veuillez fournir le nom du fichier: c:/sudoku/partie12.txt
    Erreur, fichier inexistant!
    Veuillez fournir le nom du fichier: c:/sudoku/partie1.txt
    Fichier chargé!

    -------------------------------------------------------------------------------
    -----------------------
    | 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 |
    -----------------------
    Veuillez choisir un des choix suivants:
    1. Sauvegarder jeu.
    2. Jouer Sudoku.
    3. Quitter.
    -------------------------------------------------------------------------------
    Votre choix: 2
    Veuillez choisir une ligne: 2
    Veuillez choisir une colonne: 6
    Veuillez choisir une valeur:7
    Erreur, la grille comporte déjà la valeur 7 dans le bloc représentant la case (2,6).

    -------------------------------------------------------------------------------

    | 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 |
    -----------------------
    Veuillez choisir un des choix suivants:
    1. Sauvegarder jeu.
    2. Jouer Sudoku.
    3. Quitter.
    -------------------------------------------------------------------------------
    Votre choix: 2
    Veuillez choisir une ligne: 2
    Veuillez choisir une colonne: 6
    Veuillez choisir une valeur:4
    Bravo! La valeur 4 a été insérée dans la case (2,6).

    -------------------------------------------------------------------------------
    -----------------------
    | 4 3 | 7 | 9 8 |
    | 5 | 3 4 | |
    | 1 | | 3 |
    -----------------------
    | 6 | 2 7 | |
    | 4 7 | | 1 3 |
    | | 5 4 | 9 |
    -----------------------
    | 2 | | 3 |
    | | 5 | 4 |
    | 5 4 | 1 | 2 6 |
    -----------------------
    Veuillez choisir un des choix suivants:
    1. Sauvegarder jeu.
    2. Jouer Sudoku.
    3. Quitter.
    -------------------------------------------------------------------------------
    Votre choix: 1
    Veuillez fournir le nom du fichier: c:/sudoku/partie2.txt
    Fichier sauvegardé!

    -------------------------------------------------------------------------------
    -----------------------
    | 4 3 | 7 | 9 8 |
    | 5 | 3 4 | |
    | 1 | | 3 |
    -----------------------
    | 6 | 2 7 | |
    | 4 7 | | 1 3 |
    | | 5 4 | 9 |
    -----------------------
    | 2 | | 3 |
    | | 5 | 4 |
    | 5 4 | 1 | 2 6 |
    -----------------------
    Veuillez choisir un des choix suivants:
    1. Sauvegarder jeu.
    2. Jouer Sudoku.
    3. Quitter.
    -------------------------------------------------------------------------------
    Votre choix: 3
    Merci d’avoir joué au jeu sudoku.

    Contenu du fichier partie1.txt
    014 023 037 069 088 125 143 211 263 306 342 357 404 427 461 483 535 544 589 622 673 745 764 805 824 851 862 876

    Contenu du fichier partie2.txt
    014 023 037 069 088 125 143 211 263 306 342 357 404 427 461 483 535 544 589 622 673 745 764 805 824 851 862 876 154

    Je voulais savoir si vous pouviez m'aider à m'orienter pour la création de ce programme. Je vais bientôt poster ce que j'ai commencé à faire.

  2. #2
    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
    Voilà ce que j'ai fait:

    La classe Case avec les attributs ligne, colonne, valeur.
    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
    public class Case {
     
    	private int ligne;
    	private int colonne;
    	private int valeur;
     
     
    	public Case(int x, int y, int z) {
    		this.ligne = x;
    		this.colonne = y;
    		this.valeur = z;
     
     
    	}
     
    	public int setX() {
    		return this.ligne;
    	}
     
    	public int setY() {
    		return this.colonne;
     
    	}
     
    	public int setZ() {
    		return this.valeur;
    	}
     
     
    }
    Ensuite la classe Grille :
    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
     
    import java.util.*;
    public class Grille {
     
     
     
    	int[][] tab1 = { { 0, 4, 3,  7, 0, 0,  9, 0, 8 },
    			         { 0, 0, 5,  0, 3, 0,  0, 0, 0 }, 
    			         { 0, 1, 0,  0, 0, 0,  3, 0, 0 },
     
    			         { 6, 0, 0,  0, 2, 7,  2, 0, 3 }, 
    			         { 4, 0, 7,  0, 0, 0,  1, 0, 3 },
    			         { 0, 0, 0,  5, 4, 0,  0, 0, 9 },
     
    			         { 0, 0, 2,  0, 0, 0,  0, 3, 0 },
    			         { 0, 0, 0,  0, 5, 0,  4, 0, 0 }, 
    			         { 5, 0, 4,  0, 0, 1,  2, 6, 0 } };
     
    	public Grille(){
    		ArrayList al = new ArrayList();
    		al.add(tab1);
     
    	}
     
    		}
    J'ai plusieurs questions sur cette dernière classe.
    Ma première étant si j'ai bien répondu aux point 1.1, 1.2, 2.1, 2.2 et 2.3
    Mon autre question porte sur comment je fais pour vérifier si la ligne comporte la valeur.

  3. #3
    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
    Salut,

    1.1 ok

    1.2
    a) tu crois pas que ce serait plus logique d'avoir setValeur() que setZ() (ou setLigne() que setY()) ?
    b) un setter, ou mutateur, c'est pour affecter une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setColonne(int colonne) {
        this.colonne=colonne;
    }
    Un getter, ou accesseur, c'est pour lire une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getColonner() {
       return colonne;
    }
    Là, tu as fais une sorte fusion : une sorte de sgetter, ou de mutcasseur, ou que sais-je

    2.2 On te demande d'écrire un constructeur qui initialise une grille (tableau à 2 dimension) avec une ArrayList (une liste, donc une dimension)
    a)l'ArrayList est un paramètre du constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public Grille(ArrayList<Integer> al) {
    }
    Il n'y a pas le paramètre <Integer> dans l'énoncé : peut-être est-ce un ancien sujet d'avant Java5 ?
    b)Ensuite, pose-toi la question : comment peut-on avoir dans une liste (à une dimension) des valeurs pour remplir un tableau à 2 dimensions ? Comment lire les valeurs dans l'ArrayList pour les mettres dans les cases d'un tableau à 2 dimensions ?
    2.3) tu n'as rien écrit à ce sujet : mais quand tu auras fait la 2.2 correctement, réaliser la méthode grilleToArrayList(ArrayList al) devrais couler de source.
    Autre solution : fais d'abord la 2.3, en répondant à la question "Comment mettre les valeurs d'un tableau à 2 dimensions dans une liste à une dimension" et tu auras la réponse à la première question que j'ai posé dans le 2.2)b). Et en découlera la réponse à la seconde question.
    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.

  4. #4
    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 pour tes réponses,j'ai fait ce que tu m'as dit et j'ai pour la classe case ceci:
    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 Case {
     
    	private int ligne;
    	private int colonne;
    	private int valeur;
     
    	public Case(int x, int y, int z) {
    		this.ligne = x;
    		this.colonne = y;
    		this.valeur = z;
     
    	}
     
    	public void setLigne(int ligne) {
    		this.ligne = ligne;
    	}
     
    	public void setColonne(int colonne) {
    		this.colonne = colonne;
     
    	}
     
    	public void setValeur(int valeur) {
    		this.valeur = valeur;
    	}
     
    	public int getLigne() {
    		return ligne;
    	}
     
    	public int getColonne() {
    		return colonne;
    	}
     
    	public int getValeur() {
    		return valeur;
    	}
    }
    J'ai trouvé comment créer un double tableau avec un ArrayList, le problème c'est je ne sais pas comment introduire les valeurs du tab1 dans le tableau ArrayList. En cherchant j'ai entendu parler de la méthode toArray, voici ce que j'ai trouvé :
    public <T> T[] toArray(T[] a) mais je crois que ça concerne la lecture à partir d'une liste.

    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
    import java.util.*;
    public class Grille {
    	int[][] tab1 = { { 0, 4, 3,  7, 0, 0,  9, 0, 8 },
    			         { 0, 0, 5,  0, 3, 0,  0, 0, 0 }, 
    			         { 0, 1, 0,  0, 0, 0,  3, 0, 0 },
     
    			         { 6, 0, 0,  0, 2, 7,  2, 0, 3 }, 
    			         { 4, 0, 7,  0, 0, 0,  1, 0, 3 },
    			         { 0, 0, 0,  5, 4, 0,  0, 0, 9 },
     
    			         { 0, 0, 2,  0, 0, 0,  0, 3, 0 },
    			         { 0, 0, 0,  0, 5, 0,  4, 0, 0 }, 
    			         { 5, 0, 4,  0, 0, 1,  2, 6, 0 } };
     
    	ArrayList<ArrayList<Integer>> al= new ArrayList<ArrayList<Integer>>();
     
     
     
    	public Grille(ArrayList<Integer>al){
     
     
     
    	}
     
    		}

  5. #5
    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 trouver comment créer un double tableau avec un ArrayList, le problème c'est je ne sais pas comment introduire les valeurs du tab1 dans le tableau ArrayList.
    Pourtant le sceond est plus simple que le premier.

    Créer un tableau avec une arrayList :
    Code pseudocode : 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
     
    int nbcol // nombre de colonnes
    int nblig // nombre de lignes
    ArrayList<Integer> liste
     
    if ( list.size() != nbcol * nblog ) erreur : pas assez ou trop de données dans la liste
     
    tableau = new int[nblig][nbcol]
    int ligne=0
    int colonne=0
     
    pour tous les élément e de liste
        mettre e dans tableau[ligne][colonne]
        colonne ++
        si colonne >= nbcol alors 
           colonne = 0
           linge++
       fin si
    fin pour


    Mettre le tableau dans l'arrayList :
    Méthode algorithmique
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ArrayList<Integer> // liste dans laquelle mettre la grille (paramètre de la méthode)
    int[][] tableau // tableau de valeurs
     
     
    pour ligne de 0 à taille tableau exclue
        pour colonne de 0 à taille de ligne exclue
     
             ajouter tableau[ligne][colonne] à liste
     
        fin pour colonne
     
    fin pour ligne

    Méthode par appels de méthodes Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int[] ligne : tableau) {
        arrayList.addAll( Arrays.asList(ligne) );
    }
    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. #6
    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
    Ok, merci je vais essayer de faire ça et je posterai ce que j'ai fait.

  7. #7
    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
    Bon ça n'a pas été facile, car étant la première fois que j'utilise des array ainsi que ce genre de méthode, j'ai fait ceci:
    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.util.*;
    public class Grille {
     
    	int nbcol;
    	int nblig;
     
    ArrayList<Integer> liste
     
    	if ( liste.size() != nbcol * nblog )
    		{
    		System.out.println("erreur : pas assez ou trop de données dans la liste");		
    		}
    	tabl = new int[nblig][nbcol];
    	int ligne = 0;
    	int colonne =0;
     
    	for (int i = 0; i < liste.length; i++) {
    		liste.add(tab1 [nblig][nbcol]);
    		colonne ++;
    		if( colonne >= nbcol)
    		{
    			colonne = 0;
    			ligne ++;
    		}
    		}
     
    	public Grille(ArrayList<Integer>al){
     
    		int[][] tab1;
     
    		for(int ligne = 0; ligne <tab1.length; ligne ++){
    			for(int colonne =0; colonne< ligne.length; colonne++){
     
    			}
    		}
     
    		al.add(tab1[ligne][colonne]);
     
     
    	}
     
    		}

  8. #8
    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
    Là, tu mélanges un peu tout : tu as du code en plein milieu de la classe, au lieu d'être dans un constructeur. Et je te rappelle :

    2.2-Le constructeur Grille(ArrayList al), qui permet d’initialiser l’objet grille à partir d’un arrayList.

    2.3-La fonction grilleToArrayList(ArrayList al), qui permet de sauvegarder la grille dans un ArrayList.
    Le 2.2 c'est un constructeur avec une ArrayList en paramètre, qu'on utilise pour remplir le tableau (l'initialiser). Le 2.3 c'est une méthode avec un ArrayList en paramètre, que l'on rempli avec les valeurs présentes dans 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.

  9. #9
    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 c'est vrai j'ai un peu tout mélangé, en ayant fait au peu d'ordre ça me donne :
    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
    import java.util.*;
    public class Grille {
    	int[][] tab1 = { { 0, 4, 3,  7, 0, 0,  9, 0, 8 },
    	                 { 0, 0, 5,  0, 3, 0,  0, 0, 0 }, 
    	                 { 0, 1, 0,  0, 0, 0,  3, 0, 0 },
     
    	                 { 6, 0, 0,  0, 2, 7,  2, 0, 3 }, 
    	                 { 4, 0, 7,  0, 0, 0,  1, 0, 3 },
    	                 { 0, 0, 0,  5, 4, 0,  0, 0, 9 },
     
    	                 { 0, 0, 2,  0, 0, 0,  0, 3, 0 },
    	                 { 0, 0, 0,  0, 5, 0,  4, 0, 0 }, 
    	                 { 5, 0, 4,  0, 0, 1,  2, 6, 0 } };
     
    	public Grille(ArrayList<Integer>al){
     
     
    	int nbcol;
    	int nblig;
     
    ArrayList<Integer> liste;
     
    	if ( liste.size() != nbcol * nblig)
    		{
    		System.out.println("erreur : pas assez ou trop de données dans la liste");		
    		}
    	tabl = new int[nblig][nbcol];
    	int ligne = 0;
    	int colonne =0;
     
    	for (int i = 0; i < liste.length; i++) {
    		liste.add(tab1 [nblig][nbcol]);
    		colonne ++;
    		if( colonne >= nbcol)
    		{
    			colonne = 0;
    			ligne ++;
    		}
    		}
     
     
    		public static int (ArrayList al){
     
     
     
    			for(int[] ligne : tab1) {
    			    arrayList.addAll( Arrays.asList(ligne) );
    			}
    			for(int[] colonne : tab1) {
    			    arrayList.addAll( Arrays.asList(colonne) );
    			}
     
     
     
     
    		}
     
    	}
     
    		}
    Par contre j'ai du mal à comprendre la dernière partie, celle avec la méthode qui me permet de remplir le tableau avec les valeurs.

  10. #10
    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
    C'est toujours aussi mélangé.

    Prenons le constructeur (l'autre méthode on s'en occupera quand le constructeur sera terminé et fonctionnel : une chose à la fois).

    Le constructeur Grille(ArrayList<Integer>al){ prend une LISTE en paramètre et utilise les valeurs qui sont cette LISTE pour les mettre dans un TABLEAU.

    l'esprit du code ci-après (parce qu'en plus ça ne fonctionne pas du tout), c'est l'inverse : ça met dans une LISTE une valeur lue dans un TABLEAU.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste.add(tab1 [nblig][nbcol]);
    pour parcourir les éléments e de la liste comme j'ai dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Integer e : al) {
     
        // là tu dois mettre e dans le tableau
     
    }

    Après nbLig et nbCol ne sont initialisés nulle part.

    Ensuite, on passe un paramètre appelé al au constructeur : c'est ça la liste. Pas besoin d'en déclarer ou d'en créer une autre.

    Dans le code suivant, on fait varier ligne et colonne : c'est ça les index des cases du tableau (nblig et nbcol c'est le nombre de lignes et le nombre de colonnes...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    liste.add(tab1 [nblig][nbcol]);
    colonne ++;
    if( colonne >= nbcol) {
        colonne = 0;
        ligne ++;
    }
    }
    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.

  11. #11
    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
    Une petite question surement stupide mais le ":" signifie bien tous?

    Sinon concernant cette partie où je dois mettre e dans le tableau
    pour cela je fais comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Integer e : al){
     
    		tab1 [e][e] = al;
     
    	}

  12. #12
    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
    Une petite question surement stupide mais le ":" signifie bien tous?
    Le : est la notation syntaxique pour un foreach. Syntaxe for ( type variable : iterable ) ou iterable est une instance de classe qui implémente Iterable<type>.
    Donc écrire for(Integer e : liste ) { System.out.println( e }; } est l'équivalent, de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(Iterator<Integer> iter = liste.iterator(); iter.hasNext(); ) {
       Integer e = iter.next();
       System.out.println( e ) ;
    }
    Ou encore, pour une List seulement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0;i<liste.size(); i++) {
        Integer e = liste.get(i);
        System.out.println( e );
    }
    Grace à l'auto-unboxing ("conversion" auto de Integer vers int), on peut aussi écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int e : liste) {
       System.out.println( e );
    }
    Citation Envoyé par while.dede Voir le message
    Sinon concernant cette partie où je dois mettre e dans le tableau
    pour cela je fais comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Integer e : al){
     
    		tab1 [e][e] = al;
     
    	}
    Pas du tout : ça, c'est n'importe quoi.

    Déjà, là, tu mets al dans la case du tableau donc une ArrayList, alors que c'est un tableau de int. Mettre une valeur dans le tableau signifie affecter une valeur à une case/emplacement/élément du tableau.

    Ensuite, si tu as une liste de Integer, qui contient 33, 42 et 18, e vaudra successivement 33, 42 et 18. Ce sont les valeurs dans la liste qu'on obtient : rien à voir avec des indices de tableau, dont le traitement est toujours le même depuis 6 messages : c'est toujours ligne et colonne.

    tab1[ligne][colonne]=e;
    Je t'ai dit qu'en écrivant ça liste.add(tab1 [nblig][nbcol]); tu faisais l'inverse de ce qu'il fallait faire : mettre dans une liste une valeur lue dans un tableau au lieu de mettre une valeur lue dans une liste pour la mettre dans un tableau : ça n'invalide pas le reste de la boucle, avec les calculs sur ligne et colonne, qui reste toujours valable

    Donc la boucle de copie est simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int e : al){
        tab1 [ligne][colonne) = e;
        colonne ++;
        if( colonne >= nbcol) {
            colonne = 0;
    	ligne ++;
        }
    }
    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.

  13. #13
    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 j'ai compris pour le ":", c'est bien pratique. Merci
    Concernant la boucle, je suis désolé j'avais pas du tout capté qu'il fallait tout simplement faire comme ça.
    Puis je suis aller chercher d'autres infos sur comment transformer une liste en tableau et j'ai trouvé un peu de tout, ça n'a fait que m'embrouiller. J'essaierai de faire plus attention à l'avenir à ce que tu me dit.

    voici cette partie du code corrigé
    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
     
     
    import java.util.*;
    public class Grille {
    	int[][] tab1 = { { 0, 4, 3,  7, 0, 0,  9, 0, 8 },
    	                 { 0, 0, 5,  0, 3, 0,  0, 0, 0 }, 
    	                 { 0, 1, 0,  0, 0, 0,  3, 0, 0 },
     
    	                 { 6, 0, 0,  0, 2, 7,  2, 0, 3 }, 
    	                 { 4, 0, 7,  0, 0, 0,  1, 0, 3 },
    	                 { 0, 0, 0,  5, 4, 0,  0, 0, 9 },
     
    	                 { 0, 0, 2,  0, 0, 0,  0, 3, 0 },
    	                 { 0, 0, 0,  0, 5, 0,  4, 0, 0 }, 
    	                 { 5, 0, 4,  0, 0, 1,  2, 6, 0 } };
     
    	public Grille(ArrayList<Integer>al){
     
     
    	int nbcol = 9;
    	int nblig = 9;
     
    ArrayList<Integer> liste;
     
    	if ( liste.size() != nbcol * nblig)
    		{
    		System.out.println("erreur : pas assez ou trop de données dans la liste");		
    		}
     
    	int ligne = 0;
    	int colonne =0;
     
    	for(Integer e : al){
     
     
    		    tab1 [ligne][colonne] = e;
    		    colonne ++;
    		    if( colonne >= nbcol) {
    		        colonne = 0;
    			ligne ++;
    		    }
    		}
     
     
    	}}

  14. #14
    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
    Pour la 2.4, on me demande de créer une fonction estSurLigne, je suis allé chercher dans la doc sur les Array et il y a la méthode binarySearch, par contre de ce que j'ai compris il faut que ce soit une liste triée. Le problème c'est que je ne comprend pas trop comment ma méthode pourra faire la différence entre une ligne et une colonne.
    Je suppose qu'il faut effectuer cette recherche sur le tableau.

    Pour savoir si une ligne comporte la valeur il faut que je fasse comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     for(int i=0; i<9; i++)
            {
    if(tab1[i] == valeur )
                    {
                        System.out.println("cette valeur est déjà présente sur cette ligne");
                    }

  15. #15
    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
    Oublie binarySearch() (ça va t'obliger de faire une copie, plus un tri, inutilement). Fais simplement un parcours du tableau et teste chaque élément pour trouver celui qu'on cherche...
    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. #16
    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 c'est ce que je pensais faire car l'autre méthodes me semblait trop compliquée, est ce correct 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
    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
    import java.util.*;
     
    public class Grille {
       int[][] tab1 = { { 0, 4, 3,  7, 0, 0,  9, 0, 8 },
    	                 { 0, 0, 5,  0, 3, 0,  0, 0, 0 }, 
    	                 { 0, 1, 0,  0, 0, 0,  3, 0, 0 },
     
    	                 { 6, 0, 0,  0, 2, 7,  2, 0, 3 }, 
    	                 { 4, 0, 7,  0, 0, 0,  1, 0, 3 },
    	                 { 0, 0, 0,  5, 4, 0,  0, 0, 9 },
     
    	                 { 0, 0, 2,  0, 0, 0,  0, 3, 0 },
    	                 { 0, 0, 0,  0, 5, 0,  4, 0, 0 }, 
    	                 { 5, 0, 4,  0, 0, 1,  2, 6, 0 } };
     
     
    	public Grille(ArrayList<Integer> al) {
     
    		int nbcol = 9;
    		int nblig = 9;
     
    		ArrayList<Integer> liste;
     
    		if (liste.size() != nbcol * nblig) {
    			System.out
    					.println("erreur : pas assez ou trop de données dans la liste");
    		}
     
    		int ligne = 0;
    		int colonne = 0;
     
    		for (Integer e : al) {
     
    			tab1[ligne][colonne] = e;
    			colonne++;
    			if (colonne >= nbcol) {
    				colonne = 0;
    				ligne++;
    			}
    			for (int i = 0; i < 9; i++) {
    				if (tab1[i] == valeur) {
    					System.out
    							.println("cette valeur est déjà présente sur cette ligne");
    				}
    				for (int j = 0; j < 9; j++) {
    					if (tab1[j] == valeur) {
    						System.out
    								.println("cette valeur est déjà présente sur cette colonne");
    					}
    				}
     
    			}
    		}
    	}
    }

  17. #17
    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
    Oui, enfin, dans ce bloc de code, le principe y est plus ou moins pour le test, mais déjà tab1 est un tableau à 2 dimensions : ça ne risque pas de fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for (int i = 0; i < 9; i++) {
    				if (tab1[i] == valeur) {
    					System.out
    							.println("cette valeur est déjà présente sur cette ligne");
    				}
    				for (int j = 0; j < 9; j++) {
    					if (tab1[j] == valeur) {
    						System.out
    								.println("cette valeur est déjà présente sur cette colonne");
    					}
    				}
     
    			}
    Et puis :

    2.4-La fonction estSurLigne(int _valeur, int _ligne) qui vérifie si la ligne _ligne comporte la valeur _valeur.

    2.5-La fonction estSurColonne(int _valeur, int _colonne) qui vérifie si la colonne _colonne comporte la valeur _valeur.

    On a parlé de faire 2 méthodes, pas de mettre le code de ces méthodes dans le constructeur. Fais un peu attention à ce que tu fais.

    Et comme il y a une méthode pour chercher dans une ligne, et une pour chercher dans une colonne, tu ne peux pas avoir une boucle imbriquée dans l'autre : chacune des boucles sera forcément dans sa méthode.

    Les méthodes sont censés "vérifier" : donc à priori elle doivent retourner un résultat "vérifié" ou "pas vérifié" soit un boolean, donc déjà tu dois au préalable écrire les signatures des méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public boolean estSurLigne(int _valeur, int _ligne) {
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public boolean estSurColonne(int _valeur, int _colonne) {
    }
    Et maintenant tu n'as plus qu'à mettre la bonne boucle dans la bonne méthode (en adaptant les variables...). Pense au fait que quand on a trouvé une valeur (donc tab1[...][...]==_valeur est vraie, tu peux sortir de la boucle puisque tu as le résultat de la vérification...
    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. #18
    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 c'est vrai, j'avais oublié dans la consigne il est bien spécifié deux méthodes.
    J'ai fait les boucles mais je me suis encore planté, car ça ne marche 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
    public boolean estSurLigne(int _valeur, int _ligne) {
     
    		for(int i=0; i<9; i++)		
    		if(tab1[i] == _valeur )
    		        {
    		            System.out.println("cette valeur est déjà présente sur cette ligne");
    		            _valeur = false;
    		        }
    		else if (tab1[i] != _valeur) break;
    		}
     
     
     
    	public boolean estSurColonne(int _valeur, int _colonne) {
     
    		for(int j=0; j<9; j++)
    		if(tab1[j] == _valeur )
            {
                System.out.println("cette valeur est déjà présente sur cette colonne");
                _valeur = false;
            }
    		else if (tab1[j] != _valeur) break;						
     
    			}

  19. #19
    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 crois que cela vient, entre autre du fait que j'ai mis _valeur=false alors que j'aurais du mettre return false;

    J'ai mis n'importe quoi je vais refaire mes boucles, décidément c'est pas ma semaine.

  20. #20
    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 c'est vrai, j'avais oublié dans la consigne il est bien spécifié deux méthodes.
    J'ai fait les boucles mais je me suis encore planté, car ça ne marche 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
    public boolean estSurLigne(int _valeur, int _ligne) {
     
    		for(int i=0; i<9; i++)		
    		if(tab1[i] == _valeur )
    		        {
    		            System.out.println("cette valeur est déjà présente sur cette ligne");
    		            _valeur = false;
    		        }
    		else if (tab1[i] != _valeur) break;
    		}
     
     
     
    	public boolean estSurColonne(int _valeur, int _colonne) {
     
    		for(int j=0; j<9; j++)
    		if(tab1[j] == _valeur )
            {
                System.out.println("cette valeur est déjà présente sur cette colonne");
                _valeur = false;
            }
    		else if (tab1[j] != _valeur) break;						
     
    			}
    Bah, oui : tab1 est un tableau de int à 2 dimensions, donc tab1[] est une ligne du tableau, donc un tableau à une dimension de int. Quand tu écris if(tab1[i] == _valeur ) tu compares donc un int avec un tableau de int : il est impossible qu'ils soient égaux !

    La ligne _ligne, c'est tab1[_ligne], et donc le test, c'est, pour le test surLigne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab1[_ligne][i] == _valeur )
    Pour le test surColonne, c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab1i][_colonne] == _valeur )

    Citation Envoyé par while.dede Voir le message
    Je crois que cela vient, entre autre du fait que j'ai mis _valeur=false alors que j'aurais du mettre return false;
    Euh, tu cherches si la valeur est dans la ligne (ou la colonne dans l'autre méthode) : ça ne semble pas logique de retourner plutôt true quand le test d'égalité est vérifié ?!

    Le else, par contre, ne sert à rien. Tu dois simplement tester si valeur est égal à l'élément courant dans l'itération. Quand la boucle est allé jusqu'au bout, si on a jamais vérifié l'égalité, alors c'est qu'il n'y a aucun élément dans la ligne (ou la colonne dans l'autre méthode) : donc il suffit de retourner false (ce qui veut dire qu'on a pas trouvé la valeur)
    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.
Page 1 sur 6 12345 ... DernièreDernière

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