Probleme instance java

Fermé
tatata - 9 janv. 2013 à 19:01
 tatata - 9 janv. 2013 à 20:33
Bonjour,
Je suis debutant en Java.
Dans une class je j'instancie ma classe de facon a crée une grille , avec
Grilles a = new Grilles();
J'ai dans le package une autre class (etudesgrille ) qui est sensé faire des transformations sur ma grille a, j'ai dans cette classe une fonction
score ( EtudeGrille G , int sens , int colonne, int ligne).

Et lorsque je veux faire Etudesgrilles. score (a, 1,1,1);
on me dit que je donnes etudesrilles alors que je devrais donner Grilles. Je comprend l'erreur mais cmt faire pour faire passer de la grille a instancé en debut dans ma class EtudeGrille!
J'espere avoir suffisement exposé les données pour que vous m'aidiez. Merci beaucoup pour votre aide.
A voir également:

4 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
9 janv. 2013 à 19:04
Ta fonction devrait plutôt être ceci je pense :

score (Grille G , int sens , int colonne, int ligne)
0
Merci pour ta reponse, j'ai essayé et on me renvoie comme erreur,
non-static method lecture_grille(Grilles,int,int,int) cannot be referenced from a static context.
Pourtant lecture grille n'est pas une methode static... Je comprend pas tres bien d'ou vient l'erreur.
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
9 janv. 2013 à 19:30
"lecture grille n'est pas une methode static", c'est bien le problème, il faut qu'elle soit static si tu l'utilises dans un contexte static (dans le main par exemple)
0
D'accord, j'ai reussis a changé lecture_grille en static mais elle fait elle meme appele a des fonctions qui ne sont pas static( elle utilises des variables globales qui evoluent)! du coup il y a des erreurs, comment je fais pour les appelés dans lecture_grille en static?
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
9 janv. 2013 à 19:47
Dans ce cas il faut que tu utilises des objets mais là je navigue à l'aveugle, si tu me donnes ton code je te montrerai toutes tes erreurs en une seule fois, plutôt que de les deviner au fur et à mesure.
0

/**
 *
 */
public class Etude_grille1 {
  int colonne_prec = 0;
    int ligne_prec = 0;
    int longueur_chaine = 0;
    int monotonie_chaine = 0;
    int monotonie_case = 0;
    static int score = 0;
    int tableau_score[][];
    int grille[][];
    int GrillesJeux[][];

    Etude_grille1() {

        GrillesJeux = new int[11][11];
    }
   
   
    public static void lecture_grille(Grilles G,int ligne, int colonne, int sens) {
                int [][] GrillesJeux = G.getGrille();
// permet de passer d'une case à l'autre
        if (sens != 3) {
            if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne

                comparaison(GrillesJeux,ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case preceden

            }

            lecture_grille(G,ligne, colonne + 1,1);
        }


       
        
        else{
            ajoutscore(longueur_chaine);
            longueur_chaine =0 ; 
            
            // FIN DU JEU!!!
        }
    }

   public static void Afficherscore(int score){ 
  
        
        System.out.print("Votre score est de "+score);
            }

    public static void comparaison( int ligne, int colonne, int ligne_prec, int colonne_prec) {// pour comparer une case a l'autre 


        if (GrillesJeux[ligne][colonne] < grille[ligne_prec][colonne_prec]) {
            monotonie_case = 1; // depart d'une chaine, ou on continue une chaine, donc pas de "nouvelle_chaine
            ;
        }

        if (GrillesJeux[ligne][colonne] > grille[ligne_prec][colonne_prec]) {
            monotonie_case = 0;
        }

        if (monotonie_case == monotonie_chaine) // Si c'est la "meme" monotonie alors alors on  
        {

            monotonie_chaine = monotonie_case;

        } else {
            ajoutscore(longueur_chaine);
            longueur_chaine = 0;
        }


       
    }
    public static int ajoutscore(int longueur_chaine) {
        tableau_score = new int[10][10];
        score = tableau_score[0][longueur_chaine];
        return score;
    }

    
    public  static boolean verification(int GrilleJeu[][],int ligne, int colonne) {  // permet de voir si c'est une case de la grille ou non 
        if (GrilleJeu[ligne][colonne] == 1) {
            return true;
        } else {
            return false;
        }
    }
}


Et dans le main j'appelle ce dont on parlais tt a l'h:
Etude_grille1.lecture_grille(a,1,1,1);
j'ai des erreurs dans ajoutscore, et comparaison. ( parotut ou j'ai des variable globale). Dis moi si tu n'as pas assez d'info
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
9 janv. 2013 à 20:14
De toute évidence tu as un constructeur pour Etude_grille1 donc tu peux enlever les static et utiliser un objet d'Etude_grille1 dans ton main :

Etude_grille1 eg = new Etude_grille1();
eg.lecture_grille(a,1,1,1);

Mais je n'arrive pas du tout à comprendre ce que tu veux faire, en tout cas l'utilisation des variables globales est certainement aberrante dans ton code, elles sont toujours à éviter au maximum et là tu en as partout ce qui est certainement archi-faux, il faudrait savoir à quoi tout ceci sert, mais ça parait très mal parti !
0
/*
 
public class Etude_grille1 {
  int colonne_prec = 0;
    int ligne_prec = 0;
    int longueur_chaine = 0;
    int monotonie_chaine = 0;
    int monotonie_case = 0;
    static int score = 0;
    int tableau_score[][];
    int grille[][];
    int GrillesJeux[][];

    Etude_grille1() {

        GrillesJeux = new int[11][11];
    }
   
   
    public static void lecture_grille(Grilles G,int ligne, int colonne, int sens) {
                int [][] GrillesJeux = G.getGrille();
// permet de passer d'une case à l'autre
        if (sens != 3) {
            if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne

                comparaison(GrillesJeux,ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case preceden

            }

            lecture_grille(G,ligne, colonne + 1,1);
        }


        if (sens != 4) {
            if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente
            }
            lecture_grille(G,ligne + 1, colonne, 2);
        }


        if (sens != 2) {
            if (verification(GrillesJeux,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente

                 lecture_grille(G,ligne - 1, colonne, 4);
            }
        }

        if (sens != 1) {
            if (verification(GrilleJeu,ligne,colonne+1) == true) {   // on trouve la case d'apres qui est bonne
                comparaison(ligne, colonne, ligne_prec, colonne_prec); // on la compare a la precedente, et on verifie qu'on reviens pas sur case precedente

                lecture_grille(G,ligne , colonne-1, 3);


                //  en meme temps on envoie les coordoonné pour savoir si c'est dans la meme sequence ou non
            }
        }
        
        else{
            ajoutscore(longueur_chaine);
            longueur_chaine =0 ; 
            
            // FIN DU JEU!!!
        }
    }

   public static void Afficherscore(int score){ 
  
        
        System.out.print("Votre score est de "+score);
            }

    public static void comparaison( int ligne, int colonne, int ligne_prec, int colonne_prec) {// pour comparer une case a l'autre 


        if (GrillesJeux[ligne][colonne] < grille[ligne_prec][colonne_prec]) {
            monotonie_case = 1; // depart d'une chaine, ou on continue une chaine, donc pas de "nouvelle_chaine
            ;
        }

        if (GrillesJeux[ligne][colonne] > grille[ligne_prec][colonne_prec]) {
            monotonie_case = 0;
        }

        if (monotonie_case == monotonie_chaine) // Si c'est la "meme" monotonie alors alors on  
        {

            monotonie_chaine = monotonie_case;

        } else {
            ajoutscore(longueur_chaine);
            longueur_chaine = 0;
        }


       
    }
    public static int ajoutscore(int longueur_chaine) {
        tableau_score = new int[10][10];
        score = tableau_score[0][longueur_chaine];
        return score;
    }

    
    public  static boolean verification(int GrilleJeu[][],int ligne, int colonne) {  // permet de voir si c'est une case de la grille ou non 
        if (GrilleJeu[ligne][colonne] == 1) {
            return true;
        } else {
            return false;
        }
    }
}

Je n'avais pas tout mlis mon code pour ne pas te surchargé.
Je vais utilisé des methodes recursives, en faisant lecture_grille(G,ligne + 1, colonne, 2); etc... je veux creer des variables qui resteront vraies meme si j'appelle d'autre fonction. Parce exemple longueurchaine ne peut pas revenir a 0, elle doit rester tout le temps a la valeur que j'increment au fur et a mesure.
Je ne comprend pas pourquoi je peux enlever les static si je fais ce que tu dis...
0