Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
553 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Accés à un attribut de tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accés à un attribut de tableau

n°1733229
Ville_
C'est le tarif ^^
Posté le 18-05-2008 à 01:16:37  profilanswer
 

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.

mood
Publicité
Posté le 18-05-2008 à 01:16:37  profilanswer
 

n°1733252
Profil sup​primé
Posté le 18-05-2008 à 02:34:00  answer
 

Déja foutre son code source dans des .doc c'est totalement con :/
Rien que ça, j'ai meme pas envi d'aider

n°1733254
Ville_
C'est le tarif ^^
Posté le 18-05-2008 à 02:39:50  profilanswer
 

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

n°1733255
Profil sup​primé
Posté le 18-05-2008 à 02:47:55  answer
 

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.

n°1733256
Profil sup​primé
Posté le 18-05-2008 à 02:49:01  answer
 

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".


Message édité par Profil supprimé le 18-05-2008 à 02:50:24
n°1733257
zapan666
Tout est relatif
Posté le 18-05-2008 à 02:49:09  profilanswer
 

Ville_ a écrit :

Bonjour.
this (l'arene).tab [i][j].c (attribut de CaseVide) et ca ne marche pas.


Une CaseVide est une Case
mais une Case n'est pas forcement une CaseVide
 
 
voilà pourquoi ce n'est pas possible


---------------
my flick r - Just Tab it !
n°1733281
Ville_
C'est le tarif ^^
Posté le 18-05-2008 à 10:58:35  profilanswer
 

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 ^^

n°1733293
Profil sup​primé
Posté le 18-05-2008 à 11:39:35  answer
 

zapan666 a écrit :


Une CaseVide est une Case
mais une Case n'est pas forcement une CaseVide

 


voilà pourquoi ce n'est pas possible

 

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

Message cité 1 fois
Message édité par Profil supprimé le 18-05-2008 à 11:44:54
n°1733307
zapan666
Tout est relatif
Posté le 18-05-2008 à 12:28:56  profilanswer
 

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)

 


 [:tartragnan]

 



Message édité par zapan666 le 18-05-2008 à 12:32:34

---------------
my flick r - Just Tab it !
n°1733363
Ville_
C'est le tarif ^^
Posté le 18-05-2008 à 17:29:06  profilanswer
 

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

mood
Publicité
Posté le 18-05-2008 à 17:29:06  profilanswer
 

n°1733393
zapan666
Tout est relatif
Posté le 18-05-2008 à 18:46:35  profilanswer
 

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


---------------
my flick r - Just Tab it !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Accés à un attribut de tableau

 

Sujets relatifs
Tableau de DateAcces à distance
Accès sécurisé en php: ssl, cookie, sessions, etcUn tableau qui agrandit les cases [Resolu]
initaliser un tableau de classe avec new ?Probleme tableau et cellules html
Acces au helpers dans ERB (resolu)Implémenter un tas en tableau
[Résolu]remplir un tableau 2D[Résolu] problème de déclaration de tableau
Plus de sujets relatifs à : Accés à un attribut de tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR