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

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Faire un tableau avec ce que je veux dedans

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Faire un tableau avec ce que je veux dedans

n°969843
Shaffan
Posté le 02-02-2005 à 19:42:20  profilanswer
 

Bonjour.
Disclaimer : avant toute chose, sachez que je débute en java (et en programmation tout court...) :D
 
Je sais faire un tableau à deux entrées d'entiers avec :
 

Code :
  1. public class Tableau
  2. {
  3. int[][] T;
  4. public Tableau(int n)
  5. {
  6.  T = new int[n][n];
  7.  for (int i=0; i<n; i++)
  8.  {
  9.   T[i][i]=1;
  10.  }
  11. }
  12. }


 
Jusque là ça va. Bon y'a des 1 sur la diagonale, rien ailleurs, le but étant juste de tester si ça fonctionne, avec :  
 

Code :
  1. public class Main
  2. {
  3. public static void main(String args[])
  4. {
  5.  Tableau tableautest = new Tableau(5);
  6.  System.out.println(tableautest.T[3][3]);
  7. }
  8. }


 
et effectivement ça fonctionne parfaitement.
 
Maintenant, ce que je voudrais, c'est créer un tableau du même genre, mais ne contenant non pas des entiers, mais un objet que je nomme "Case" :
 

Code :
  1. public class Case
  2. {
  3. int test;
  4. }


 
Là c'est particulièrement stupide car une case n'a comme attribut qu'un entier, mais le but c'est de rendre ensuite les cases plus riches.
 
Et ça j'y arrive pas.
 
Si je crée une classe Tableau2 quasiment identique à la précédente, comme ça :
 

Code :
  1. public class Tableau2
  2. {
  3. Case[][] T;
  4. public Tableau2(int n)
  5. {
  6.  T = new Case[n][n];
  7.  for (int i=0; i<3; i++)
  8.  {
  9.   T[i][i].test=1;
  10.  }
  11. }
  12. }


 
le .test c'est pour essayer d'atteindre l'attribut "test" de la case (i,i)
 
Ben là ça déconne, quand j'utilise :
 

Code :
  1. public class Main
  2. {
  3. public static void main(String args[])
  4. {
  5.  Tableau2 tableautest2 = new Tableau2(5);
  6.  System.out.println(tableautest2.T[3][3].test);
  7. }
  8. }


 
je reçois le message d'erreur :
Exception in thread "main" java.lang.NullPointerException
at Tableau2.<init><Tableau2.java:10)
at Main.main<Main.java:5>

 
Svp j'ai l'impression d'avoir tout essayé, j'ai vraiment besoin d'un coup de pouce :'(


Message édité par Shaffan le 02-02-2005 à 20:08:47
mood
Publicité
Posté le 02-02-2005 à 19:42:20  profilanswer
 

n°969846
Jubijub
Parce que je le VD bien
Posté le 02-02-2005 à 19:48:06  profilanswer
 

Hum ...faudrait relire un peu le cours sur les objets...
 
Autre chose, edite ton poste, et met tes morceaux de codes entre balises [ code] ... [ /code] (sans les espaces)
 

Code :
  1. Ca donne ca


 
ensuite en objet y'a un concept qui s'appelle l'encapsulation : ca consiste à cacher de l'extérieur l'état interne de l'objet, en l'occurence ses variables.
Donc tu commences par faire ca :  

Code :
  1. public class case {
  2.     private int value; // stocke ta valeur
  3.     public int getValue() {
  4.         return this.value;
  5.     }
  6.     public void setValue(int value) {
  7.         this.value = value;
  8.     }


 
ensuite il te faut créer des objets cases avant de pouvoir les utiliser.


---------------
Jubi Photos : Flickr - 500px
n°969855
Shaffan
Posté le 02-02-2005 à 19:56:17  profilanswer
 

Malheureusement les cours sur les objets j'en ai quasiment pas eu :(
Je vais éditer mon 1er post.
 
Je vais essayer cette encapsulation, mais je ne vois pas trop comment ça va m'aider pour créer mon tableau :??:

n°969857
the real m​oins moins
Posté le 02-02-2005 à 19:57:02  profilanswer
 

merci jubijub pour ce post aussi confituresque qu'inutile.
 
--> si le constructeur de Case prenait un int


T[i][i] = new Case(1);  


ou
-->


Case c = new Case();
c.truc = 1; // ou c.setTruc(1); // merci bubujuibjuj
T[i][i] = c;


Message édité par the real moins moins le 02-02-2005 à 19:57:22

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°969866
Shaffan
Posté le 02-02-2005 à 20:13:20  profilanswer
 

Ca m'a l'air plus simple ça, mais j'arrive pas à faire la 1ère méthode déjà - je vais essayer la 2e

n°969867
Shaffan
Posté le 02-02-2005 à 20:16:23  profilanswer
 

Avec la 1ere méthode tj, effectivement je n'ai plus l'erreur [b]at Tableau2.<init><Tableau2.java:10>[b]
par contre j'ai tj la 2e, celle qui soncerne le main (est-ce c'est juste ma syntaxe d'affichage qui est fausse ?!)

n°969869
koude
Posté le 02-02-2005 à 20:18:06  profilanswer
 

Pour ton erreur regarde de ce coté là :
for (int i=0; i<3; i++)  
{  
    T[i][i].test=1;  
}


Message édité par koude le 02-02-2005 à 20:19:20
n°969873
Shaffan
Posté le 02-02-2005 à 20:20:45  profilanswer
 

En fait, ce que je voudrais, c'est très exactement :
afficher un attribut d'une Case x,y du tableau.
 
C'est pour ça que je fait : afficher "tableautest2.T[3][3].test" pour afficher l'attribut "test" de la case "T[3][3]" du tableau "tableautest2"
Mais ça marche tj pas :'(

n°969875
Shaffan
Posté le 02-02-2005 à 20:22:03  profilanswer
 

Merde j'suis trop con c'était ça ! Merci beaucoup ça fonctionne maintenant :jap: :jap:
 
EDIT : et désolé de vous avoir dérangé pour si peu


Message édité par Shaffan le 02-02-2005 à 20:22:26
n°969876
koude
Posté le 02-02-2005 à 20:22:19  profilanswer
 

ta condition d'arret lors de l'initialisation est fausse

mood
Publicité
Posté le 02-02-2005 à 20:22:19  profilanswer
 

n°969930
Jubijub
Parce que je le VD bien
Posté le 02-02-2005 à 21:47:52  profilanswer
 

oui g oublié de lui mettre le constructeur...mais il était déjà pas super bien parti avec le coup de la variable public...c pas une super habitude à prendre...


---------------
Jubi Photos : Flickr - 500px
n°969951
the real m​oins moins
Posté le 02-02-2005 à 21:58:26  profilanswer
 

jj>bah oui mais bon, tout ça n'avait rien à voir avec la question, donc bon, si tu le mentionnes pas (que ça n'a rien à voir)... :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°970109
Shaffan
Posté le 03-02-2005 à 00:01:16  profilanswer
 

C'est bon vous battez pas :D
Tout ce que je voulais faire fonctionner tourne maintenant au poil ;)
Encore merci !

n°970252
Gonzoide
Les cochons... dans l'espâââce
Posté le 03-02-2005 à 10:08:58  profilanswer
 

Shaffan a écrit :

C'est bon vous battez pas :D
Tout ce que je voulais faire fonctionner tourne maintenant au poil ;)
Encore merci !


Ca suffit pas que ca marche, faudrait en plus que ca soit propre pour progresser dans la bonne direction :D
 
Le fait que ta classe Tableau expose sa variable d'instance T est non seulement dangereux mais en plus vraiment pas O-O ... si tu regardes bien tu constateras (entre autres choses) que l'interet de ta classe Tableau est nul, puisque tu l'utilises comme un bete tableau au travers de "Tableau.T" alors que tu devrais cacher son implementation par l'utilisation de methodes publiques ...


Message édité par Gonzoide le 03-02-2005 à 10:09:31
n°970451
Shaffan
Posté le 03-02-2005 à 12:44:36  profilanswer
 

Si l'intérêt de la classe tableau est nul, comment je peux faire un "bête tableau" mais qui comporte autre-chose que des entiers ?

n°970467
Gonzoide
Les cochons... dans l'espâââce
Posté le 03-02-2005 à 13:17:47  profilanswer
 

Shaffan a écrit :

Si l'intérêt de la classe tableau est nul, comment je peux faire un "bête tableau" mais qui comporte autre-chose que des entiers ?


 
 
Ben avec "Case[][] tableau" pour un tableau de cases, ou "Object[][] tableau" pour un tableau de n'importe quoi, pas la peine d'encapsuler ca dans une classe Tableau qui n'apporte rien (a part un contructeur qui pre-remplit les donnees).
 
Mais l'un comme l'autre ne sont pas objet du tout, bien sur  ... tu raisonnes en termes de stockage de donnees alors que tu devrais plutot raisonner en termes d'utilisation de donnees ... ta classe Tableau doit fournir une interface qui par exemple renvoie une Case particuliere pour un couple de coordonnees, c'est pas pour ca qu'en interne faut que ce soit un xxx[][]. Et encore moins que les utilisateurs de ta classe sachent qu'elle contient un tableau (ca c'est vraie heresie)  
 
Modelises tes besoins et une fois que c'est fait choisis la meilleure implementation.

n°970491
Shaffan
Posté le 03-02-2005 à 13:33:56  profilanswer
 

Ben en fait effectivement j'ai un constructeur dans ma classe tableau, qui remplit tous les paramètres de chaque case.
 
Pour l'hérésie désolé si t'es du genre inquisiteur, mais pour le moment je pige pas grand chose alors je fais ce que je sais faire - pour la beauté de la chose ce sera pour plus tard :/

n°970511
Gonzoide
Les cochons... dans l'espâââce
Posté le 03-02-2005 à 13:46:27  profilanswer
 

Shaffan a écrit :

Pour l'hérésie désolé si t'es du genre inquisiteur, mais pour le moment je pige pas grand chose alors je fais ce que je sais faire - pour la beauté de la chose ce sera pour plus tard :/


Je suis pas du tout inquisiteur, mais ce que tu fais c'est contraire a tous les principes OO ... tu ne fais qu'adapter des structures de donnees a la syntaxe Java, mais tu fais pas du Java, et tu n'essaies pas de comprendre ce qu'est Java. Ca serait du C#, du PHP ou du Visual Basic ca serait pareil. Errare humanum est, perseverare diabolicum.
 
C'est ca le premier (et le plus difficile) truc a comprendre avant de se mettre a un nouveau langage ... Java c'est un peu plus qu'une syntaxe, interesse-toi a tout ce qui fait ce langage avant de te lancer dans une programmation sans comprendre, tu te rendras service pour plus tard. Et si tu crois que c'est simplement "pour la beaute de la chose", c'est que t'as serieusement loupe un truc.


Message édité par Gonzoide le 03-02-2005 à 13:51:05
n°970518
the real m​oins moins
Posté le 03-02-2005 à 13:51:05  profilanswer
 

gonzoide > faut laisser le temps à ces choses-là de décanter ;)
j'ai commencé java en "adaptant" des trucs que j'avais fait en php... j'aurais honte de montrer le résultat maintenant, mais ça n'empeche pas que j'ai progressé en oo ;) - tu peux pas tout encaisser à la fois


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°970521
Gonzoide
Les cochons... dans l'espâââce
Posté le 03-02-2005 à 13:51:54  profilanswer
 

the real moins moins a écrit :

gonzoide > faut laisser le temps à ces choses-là de décanter ;)
j'ai commencé java en "adaptant" des trucs que j'avais fait en php... j'aurais honte de montrer le résultat maintenant, mais ça n'empeche pas que j'ai progressé en oo ;) - tu peux pas tout encaisser à la fois


 
J'ai fait pareil au debut, mais j'ai toujours ecoute mes aines, en revanche. Comme je viens d'editer dans mom post : Errare humanum est, perseverare diabolicum

n°970547
the real m​oins moins
Posté le 03-02-2005 à 14:12:45  profilanswer
 

:jap: [:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 


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

  [Java] Faire un tableau avec ce que je veux dedans

 

Sujets relatifs
figer un tableauTrier un tableau + requete sur 2 tables
java et pdfComment afficher une page html depuis une application java [Réglé]
Tableau en CSS avec restriction...écriture d'un tableau dans un fichier
[java/netbeans4.0] Integrer une librairie... (resolved)parser un fichier xml en java
dimension d'un tableau de tableau[java] Probleme pour afficher une image
Plus de sujets relatifs à : [Java] Faire un tableau avec ce que je veux dedans


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