Accés à un attribut de tableau - Java - Programmation
Marsh Posté le 18-05-2008 à 02:34:00
Déja foutre son code source dans des .doc c'est totalement con
Rien que ça, j'ai meme pas envi d'aider
Marsh Posté le 18-05-2008 à 02:39:50
public class Arene {
int W;
int H;
Case [][] tab;
public Arene (int W,int H){
tab = new Case [this.W][this.H];
}
public String afficher (Arene a){
String affiche="";
for (int i=0;i<a.W;i++){
for (int j=0;j<a.H;j++){
affiche = affiche+a.tab[i][j]+" ";
}
affiche = "\n";
}
return affiche;
}
void ajouteCase(Case c, int x, int y){
this.tab[x][y] = c;
}
public void remplir(){
Case uneCaseVide = new CaseVide();
for(int i=0;i<this.W;i++){
for(int j=0;j<this.H;j++){
this.ajouteCase(uneCaseVide,i,j);
}
}
}
}
public interface Case {
boolean estPossible(Robot r);
void deplace(Robot r); //throws MouvementExeption;
boolean bloqueTir();
}
public class CaseVide implements Case{
String k = " ";
public boolean bloqueTir() {
return false;
}
public void deplace(Robot r) {
}
public boolean estPossible(Robot r) {
return false;
}
}
public class Test {
public static void main(String[] args) {
Arene arene1 = new Arene(50,50);
arene1.remplir();
System.out.println(arene1.toString());
}
}
soit un peu plus poli stp .... Voilà le code
Marsh Posté le 18-05-2008 à 02:47:55
public Arene (int W,int H){
tab = new Case [this.W][this.H];
}
Ouai déja c pas bon ça !
c'est quoi ce "this", il a rien a faire la !
c'est les parametres du constructeur que tu veux récuperer, alors vire le this.
Marsh Posté le 18-05-2008 à 02:49:01
Bah le reste c'est bourré de faute.
Prend un livre de Java et apprend le Java, surtout le passage qui parle du mot clef "this".
Marsh Posté le 18-05-2008 à 02:49:09
Ville_ a écrit : Bonjour. |
Une CaseVide est une Case
mais une Case n'est pas forcement une CaseVide
voilà pourquoi ce n'est pas possible
Marsh Posté le 18-05-2008 à 10:58:35
ok, je comprend zapan, mais ca me dit toujours pas comment, je vais réduire le problème au maximum.
public class Test {
public static void main(String[] args) {
Arene arene1 = new Arene(50,50);
CaseVide m = new CaseVide();
arene1.ajouteCase(m,1,1);
System.out.println(arene1.tab[1][1].k);
}
}
Voilà en admettant que ma methode d'ajout de case marche, même en ajoutant directement une case vide dans mon tableau le compilateur bloque à cette ligne : System.out.println(arene1.tab[1][1].k); sur le ".k" et me dit que mon interface case n'a pas d'attribut "k" mais à ce moment la comment utiliser ma class CaseVide.
Pour cantor : je sais que je suis nul en java, merci pour ta franchise ^^
Marsh Posté le 18-05-2008 à 11:39:35
zapan666 a écrit :
|
Il a pas fait un héritage simple, mais une interface avec implémentation .
Une CaseVide n'est pas une case, elle implémente juste la classe Case
Si j'ai le temps je te referai tout ca proprement
Marsh Posté le 18-05-2008 à 12:28:56
Ville_ a écrit : System.out.println(arene1.tab[1][1].k); sur le ".k" et me dit que mon interface case n'a pas d'attribut "k" mais à ce moment la comment utiliser ma class CaseVide. |
Vu ton nouveau code, tu travail maintenant sur CaseVide et non Case. L'attribut k est en default (c'est a dire visibilite package) donc pour y avoir accès il faut que ta class qui y accède soit dans le même package que ta class CaseVide. Bref, tu semble ne pas avoir le droit d'accéder à ton attribut car il n'est pas visible (cf mot clé public/private/default/protected)
Marsh Posté le 18-05-2008 à 17:29:06
même quand je modifie la visibilité de l'attribut, ca ne marche pas, essaye tu verras, bon sinon tant pis je demanderai à un pote comment résoudre mon problème. merci bcp
Marsh Posté le 18-05-2008 à 18:46:35
Ville_ a écrit : même quand je modifie la visibilité de l'attribut, ca ne marche pas, essaye tu verras, bon sinon tant pis je demanderai à un pote comment résoudre mon problème. merci bcp |
uhm, j'ai mal lu, mais le tableau dans Arene est toujours de type Case
Marsh Posté le 18-05-2008 à 01:16:37
Bonjour.
Je ne maitrise pas bien java (je suis nul) et voilà mon problème :
déjà voilà mes classes :
http://jeremy.degraeve.fr/tp_notée/Arene.doc ==> classe
http://jeremy.degraeve.fr/tp_notée/Case.doc ==> Interface
http://jeremy.degraeve.fr/tp_notée/CaseVide.doc ==> classe implements Case
http://jeremy.degraeve.fr/tp_notée/Test.doc ==> classe test
je voudrai en faite avec ce que j'ai écrit réussir à afficher mon tableau remplis de CaseVide, mais je n'y arrive pas.
J'ai crée dans mon arène un constructeur qui construit une arene avec un tableau de type Case (qui est une interface).
J'ai ensuite crée un objet : Case uneCaseVide = new CaseVide();
j'ai affecter à chaque case de mon tableau l'objet uneCaseVide mais pour ensuite y accéder je fais : this (l'arene).tab [i][j].c (attribut de CaseVide) et ca ne marche pas.
Aidé moi s'il vous plaie, je suis pret à réexpliquer mon probleme si ce n'est pas bien fais, merci d'avance.