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

Collection et Stream Java Discussion :

NullPointerException sur un tableau.


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut NullPointerException sur un tableau.
    Bonsoir,

    Pour un projet en cours, je dois créer un algorithme récursif permettant de résoudre le problème des 8 reines (placer 8 reines sur un échiquier de 8x8 cases sans qu'elles ne se menacent mutuellement).
    Pour cet algorithme je me suis inspiré d'une proposition de solution mise à disposition en langage algorithmique sur un site trouvé.

    Codant en Java je l'ai retranscrit dans ce langage mais j'ai une erreur.

    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
    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
     
    public class ProbReines {
        private int nbReines = 8;
        private int[] echiquier;
     
        public ProbReines(){
     
        }
     
        public static void main(String[] args){
            ProbReines test = new ProbReines();
            test.placerReine(1);
        }
     
        public boolean estLibre(int[] unEchiquier,int ligne,int colonne){
            int l, c;
            boolean resultat;
     
            resultat = true;
            l = 1;
     
            while(l <= ligne){
                c = unEchiquier[l];
                resultat = resultat && (Math.abs(ligne-l) != Math.abs(colonne-c)) && (colonne != c);
                l = l + 1;
            }
            return resultat;
        }
     
        public void placerReine(int reine){
            int col;
     
            if(reine > nbReines){
     
            }
            else{
                col = 1;
                while(col <= nbReines){
                    if(estLibre(echiquier,reine,col)){
                        echiquier[reine] = col;
                        placerReine(reine + 1);
                        echiquier[reine] = 0;
                    }
                    col = col +1;
                }
            }
        }
    }

    Et voici l'erreur :

    Exception in thread "main" java.lang.NullPointerException
    at projet.ProbReines.estLibre(ProbReines.java:25)
    at projet.ProbReines.placerReine(ProbReines.java:41)
    at projet.ProbReines.main(ProbReines.java:14)
    Java Result: 1

    Sur l'algo de départ j'ai cette donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S[1,n] : tableau d'entiers;
    Ce que j'ai retranscrit par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private int[] echiquier;
    Parce qu'honnêtement, je ne suis plus très opérationnel en Java et j'ai toujours eu un souci avec les tableaux..

    Merci d'avance,
    Bonne soirée !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pour l'initialiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private int[] echiquier = new int[taille];
    sinon, il est null.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse.

    En effet, j'avais vu qu'il fallait mettre une taille et j'avais essayé mais une autre erreur était apparue donc j'ai décidé de remettre le code de départ pour ce sujet.

    M'enfin, après avoir mis la taille à 8, j'ai ceci comme erreur :

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
    at projet.ProbReines.estLibre(ProbReines.java:25)
    at projet.ProbReines.placerReine(ProbReines.java:41)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.placerReine(ProbReines.java:43)
    at projet.ProbReines.main(ProbReines.java:14)
    Java Result: 1
    D'après ce que j'ai vu sur le net, cela veut dire que je passe au-delà de la capacité du tableau ? Mais je ne comprends pas à quel moment.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben au moment où tu accède à l'index 8, donc au 9ème élément, d'un tableau qui n'a que 8 places...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Ouais mais si on regarde le nombre d'erreurs affichées, il y en a 8 sur placerReine donc c'est qu'il n'y a que 8 traitements ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    col = 1;
                while(col <= nbReines)
    L'index d'un tableau commence par 0 en java et non pas à 1.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Même souci avec col initialisé à 0.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    même soucis, même réponse: tu accède au neuvième élément d'un tableau qui n'en compte que 8, ce n'est pas permis.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Oui j'ai compris la nature du problème mais honnêtement je sèche sur la solution..

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    col = 1;
                while(col <= nbReines)
    dois devenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    col = 0;
                while(col < nbReines)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Ah ça a fonctionné ! Il fallait que je fasse la même modification sur le l dans estLibre que sur col !

    En revanche maintenant le programme s'exécute mais sans affichage, j'ai donc tenté d'ajouter une boucle for afin d'afficher chaque position des reines placées. Le souci c'est que j'ai beaucoup plus que 8 résultats, avec notamment plusieurs 0.

    Savez-vous comment puis-je faire pour avoir uniquement les numéros de colonne des reines placées ?

    Par exemple la solution {1,7,4,6,8,2,5,3} veut dire qu'une reine est placée :
    - sur la première colonne de la première ligne
    - la suivante est placée sur la 7ème colonne de la deuxième ligne
    - la suivante est placée sur la 4ème colonne de la troisième ligne
    - et ainsi de suite..

    A part les modifications sur l et col, j'ai donc rajouté le for dans placerReine :

    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
    public class ProbReines {
        private int nbReines = 8;
        private int[] echiquier = new int[nbReines];
     
        public ProbReines(){
     
        }
     
        public static void main(String[] args){
            ProbReines test = new ProbReines();
            test.placerReine(1);
        }
     
        public boolean estLibre(int[] unEchiquier,int ligne,int colonne){
            int l, c;
            boolean resultat;
     
            resultat = true;
            l = 0;
     
            while(l < ligne){
                c = unEchiquier[l];
                resultat = resultat && (Math.abs(ligne-l) != Math.abs(colonne-c)) && (colonne != c);
                l = l + 1;
            }
            return resultat;
        }
     
        public void placerReine(int reine){
            int col;
     
            if(reine > nbReines){
     
            }
            else{
                col = 0;
                while(col < nbReines){
                    if(estLibre(echiquier,reine,col)){
                        echiquier[reine] = col;
                        placerReine(reine + 1);
                        echiquier[reine] = 0;
                    }
                    col = col + 1;
                }
                for(int i=0; i<echiquier.length; i++){
                    System.out.println(echiquier[i]);
                }
            }
        }
    }

  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
    Salut,

    Déjà, au lieu d'afficher chaque élément du tableau sur une ligne séparée, ce qui est forcément illisible (parce qu'on ne voit pas où ça commence et où ça finit), affiche chaque "version" du tableau sur une ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i=0; i<echiquier.length; i++){
                    System.out.print(echiquier[i]);
    }
    System.out.println();
    Sache qu'on peut afficher directement un tableau aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Arrays.toString(echiquier));
    Si tu ne veux pas afficher les zéros, il faudra les filtrer par une condition if dans la boucle, ou utiliser un stream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Arrays.toString(Arrays.stream(echiquier).filter(r->r!=0).toArray()));
    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Je ne connaissais pas cette commande

    System.out.println(Arrays.toString(echiquier));
    Mais merci, c'est exactement l'affichage que je recherchais.

    En revanche en ce qui concerne les 0, je ne veux pas les filtrer à l'affichage. Je ne dois pas en avoir du tout normalement. Car ceci étant un échiquier, les colonnes vont de 1 à 8. C'est pour ça qu'au départ j'initialisais tout à 1 plutôt que 0, mais cela me créait des erreurs.
    En théorie sur le problème des 8 reines c'est impossible d'avoir un 0 quelque part. :/

  14. #14
    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
    Les indices de tableau vont de 0 à n-1 (n la taille du tableau), mais tu peux stocker les valeurs que tu veux (du moment qu'elles sont du bon type). Donc tu peux stocker i+1 dans tab[i]. Si tu as des 0 dans le tableau, je ne sais pas, il faut revoir tout l'algorithme. En tout cas, à un endroit dans le code, tu places explicitement un 0 dans le tableau, par echiquier[reine] = 0;, donc ce n'est pas illogique de trouver des 0 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.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    J'y ai pensé également mais même en enlevant cette ligne les 0 restent pareils.

  16. #16
    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
    Je pense que le problème de ton algorithme est qu'il est basé sur des indices allant de 1 à nbReines : en modifiant que les boucles, pour que les indices respectent les règles de Java (donc indices de 0 à nbReines-1), sans appliquer cette même translation aux valeurs correspondant à une reine, tu rends incohérent l'algorithme.

    Essaye simplement de revenir au programme de départ (sauf en ajoutant l'instanciation de tableau qui manque), et d'ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       private int getReine(int i) {
    	return echiquier[i-1];
    }
     
       private void setReine(int i,int reine) {
    		echiquier[i-1]=reine;
    	}
    Partout où tu fais echiquier[truc]=machin, tu remplaces par setReine(truc, machin), et partout où tu fais echiquier[truc], tu remplaces par getReine(truc). Tu vires bien sûr la ligne equiquier[reine]=0;.
    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.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Mon code est donc le suivant :

    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
    import java.lang.reflect.Array;
    import java.util.Arrays;
     
    public class ProbReines {
        private int nbReines = 8;
        private int[] echiquier = new int[nbReines];
     
        public ProbReines(){
     
        }
     
        public static void main(String[] args){
            ProbReines test = new ProbReines();
            test.placerReine(1);
        }
     
        public boolean estLibre(int[] unEchiquier,int ligne,int colonne){
            int l, c;
            boolean resultat;
     
            resultat = true;
            l = 1;
     
            while(l <= ligne){
                c = getReine(l);
                resultat = resultat && (Math.abs(ligne-l) != Math.abs(colonne-c)) && (colonne != c);
                l = l + 1;
            }
            return resultat;
        }
     
        public void placerReine(int reine){
            int col;
     
            if(reine > nbReines){
     
            }
            else{
                col = 1;
                while(col <= nbReines){
                    if(estLibre(echiquier,reine,col)){
                        setReine(reine,col);
                        placerReine(reine + 1);
                    }
                    col = col + 1;
                }
                System.out.println(Arrays.toString(echiquier));
            }
        }
     
        private int getReine(int i) {
    	return echiquier[i-1];
        }
     
        private void setReine(int i,int reine) {
    	echiquier[i-1]=reine;
        }
    }
    J'ai donc maintenant toujours une multitude de réponses et beaucoup de fausses, je m'explique : je trouve encore des 0 dans les premiers résultats, un moment on peut voir que dans les 8 cases affichées il y a deux fois le chiffre 2 (alors qu'on ne peut pas mettre deux reines sur la même colonne), et puis la première bonne réponse trouvable est la suivante : [1, 5, 8, 6, 3, 7, 2, 4].
    Or voici la liste des solutions que je reçois (je ne mets que le début, il y en a encore beaucoup d'autres, je les reçois d'ailleurs quasiment toutes plusieurs fois) :

    [1, 3, 5, 2, 4, 0, 0, 0]
    [1, 3, 5, 2, 8, 0, 0, 0]
    [1, 3, 5, 2, 8, 0, 0, 0]
    [1, 3, 5, 7, 2, 4, 6, 0]
    [1, 3, 5, 7, 2, 4, 6, 0]
    [1, 3, 5, 7, 2, 4, 6, 0]
    [1, 3, 5, 7, 4, 4, 6, 0]
    [1, 3, 5, 7, 4, 4, 6, 0]
    [1, 3, 5, 8, 2, 4, 6, 0]
    [1, 3, 5, 8, 4, 4, 6, 0]
    [1, 3, 5, 8, 4, 4, 6, 0]
    [1, 3, 5, 8, 4, 4, 6, 0]
    [1, 3, 6, 2, 7, 5, 6, 0]
    [1, 3, 6, 2, 7, 5, 6, 0]
    [1, 3, 6, 2, 7, 5, 6, 0]
    [1, 3, 6, 8, 2, 4, 6, 0]
    [1, 3, 6, 8, 2, 5, 6, 0]
    [1, 3, 6, 8, 2, 5, 6, 0]
    [1, 3, 6, 8, 2, 5, 6, 0]
    [1, 3, 6, 8, 2, 5, 6, 0]
    [1, 3, 7, 2, 4, 8, 6, 0]
    [1, 3, 7, 2, 4, 8, 6, 0]
    [1, 3, 7, 2, 8, 5, 6, 0]
    [1, 3, 7, 2, 8, 5, 6, 0]
    [1, 3, 7, 2, 8, 5, 6, 0]
    [1, 3, 7, 2, 8, 5, 6, 0]
    [1, 3, 8, 6, 2, 5, 6, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 3, 8, 6, 4, 2, 5, 0]
    [1, 4, 2, 5, 3, 2, 5, 0]
    [1, 4, 2, 5, 8, 2, 5, 0]
    [1, 4, 2, 5, 8, 2, 5, 0]
    [1, 4, 2, 7, 3, 2, 5, 0]
    [1, 4, 2, 7, 3, 2, 5, 0]
    [1, 4, 2, 8, 6, 3, 5, 0]
    [1, 4, 2, 8, 6, 3, 5, 0]
    [1, 4, 2, 8, 6, 3, 5, 0]
    [1, 4, 2, 8, 6, 3, 5, 0]
    [1, 4, 6, 3, 6, 3, 5, 0]
    [1, 4, 6, 8, 2, 5, 3, 0]
    [1, 4, 6, 8, 2, 5, 3, 0]
    [1, 4, 6, 8, 2, 7, 3, 0]
    [1, 4, 6, 8, 2, 7, 3, 0]
    [1, 4, 6, 8, 3, 5, 3, 0]
    [1, 4, 6, 8, 3, 7, 3, 0]
    [1, 4, 6, 8, 3, 7, 3, 0]
    [1, 4, 6, 8, 3, 7, 3, 0]
    [1, 4, 6, 8, 3, 7, 3, 0]
    [1, 4, 7, 3, 6, 2, 5, 0]
    [1, 4, 7, 3, 6, 2, 5, 0]
    [1, 4, 7, 3, 6, 2, 5, 0]
    [1, 4, 7, 3, 8, 2, 5, 0]
    [1, 4, 7, 3, 8, 2, 5, 0]
    [1, 4, 7, 5, 2, 2, 5, 0]
    [1, 4, 7, 5, 3, 2, 5, 0]
    [1, 4, 7, 5, 8, 2, 5, 0]
    [1, 4, 7, 5, 8, 2, 5, 0]
    [1, 4, 7, 5, 8, 2, 5, 0]
    [1, 4, 8, 3, 8, 2, 5, 0]
    [1, 4, 8, 5, 2, 2, 5, 0]
    [1, 4, 8, 5, 3, 2, 5, 0]
    [1, 4, 8, 5, 3, 2, 5, 0]
    [1, 4, 8, 5, 3, 2, 5, 0]
    [1, 4, 8, 5, 3, 2, 5, 0]
    [1, 5, 2, 6, 3, 2, 5, 0]
    [1, 5, 2, 8, 6, 3, 5, 0]
    [1, 5, 2, 8, 6, 4, 5, 0]
    [1, 5, 2, 8, 6, 4, 5, 0]
    [1, 5, 2, 8, 6, 4, 5, 0]
    [1, 5, 2, 8, 6, 4, 5, 0]
    [1, 5, 7, 2, 4, 8, 5, 0]
    [1, 5, 7, 2, 4, 8, 5, 0]
    [1, 5, 7, 2, 6, 3, 5, 0]
    [1, 5, 7, 2, 6, 8, 5, 0]
    [1, 5, 7, 2, 6, 8, 5, 0]
    [1, 5, 7, 2, 6, 8, 5, 0]
    [1, 5, 7, 2, 6, 8, 5, 0]
    [1, 5, 8, 6, 3, 7, 2, 4]
    [1, 5, 8, 6, 3, 7, 2, 4]
    [1, 5, 8, 6, 3, 7, 2, 4]

    [1, 5, 8, 6, 4, 2, 2, 4]
    [1, 5, 8, 6, 4, 7, 2, 4]
    [1, 5, 8, 6, 4, 7, 2, 4]
    [1, 5, 8, 6, 4, 7, 2, 4]
    [1, 5, 8, 6, 4, 7, 2, 4]
    [1, 5, 8, 6, 4, 7, 2, 4]
    En ce qui concerne le fait que la colonne et la ligne soit libre, ceci est vérifié par la fonction estLibre et notamment par cette ligne qui, normalement, doit comparer les valeurs absolues des expressions entre parenthèses et renvoyer vrai ou faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = resultat && (Math.abs(ligne-l) != Math.abs(colonne-c)) && (colonne != c);
    Ce projet est en train de me rendre dingue..

Discussions similaires

  1. NullPointerException sur un tableau de String
    Par floctc dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 20/04/2010, 09h03
  2. [Tableau] NullPointerException sur les tableaux
    Par zsoh dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 18/01/2010, 17h42
  3. Réponses: 2
    Dernier message: 08/04/2004, 16h30
  4. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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