CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

JAVA: Utiliser vecteur comme tableau 2D

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 04:40:16

Bonjour, j'ai un travail pratique à faire dans mon cours de programmation JAVA et je dois faire un genre de programme qui ressemble à excel.

Je suis obligé d'utiliser la classe VECTOR pour stocker ce que contient les grilles (en l’occurrence un objet de type String).

Le problème est que je bloque, un objet Vector instancié de cette façon: Vector vector = null est à la base déjà un tableau, mais comment le transformer en tableau 2D ? J'ai essayé de le faire de cette façon: Vector[][] vector = null mais la plupart de ses méthodes ne marche pas et je me suis aussi aperçu que je venais de créer un tableau 2D de tableau alors que je veux créer un tableau 2D d'objets String et en plus la majorité de ses méthodes utilitaires ne marchent pas (ex: size(), etc).

Je dois avoir des colonnes et des lignes pour pouvoir l'afficher dans le tableau à la "excel", mais je ne sais vraiment pas comment faire.

Vous avez une solution ?

Merci !

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 04:54:46

Après plus de réflexion, j'en suis venu à cette idéé:

table = new Vector(nbCol);

for (int i = 0; i < nbLigne; i++)
{
table.add(new Vector());
}

J'aurais donc un Vector qui est un tableau et chacun de ses éléments serait un autre tableau avec des objets String. Cependant, ça me complique la vie pour acceder à chaque éléments (parce je dois par exemple, pour modifier un objet dans une certaine case, etc).

Existe-t-il un moyen plus facile ?

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 05:02:46

ajoute un objet vector a un autre vector

Vector tableau = new Vector()

tableau.add(new Vector()) # ajoute une collone
tableau.get(0).add(objet) # ajoute un objet a la collone 0 (+ un ligne)
tableau.get(0).get(0) # obtenir lobjet stoquer dans colone 0 ligne 0

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 05:22:07

Merci pour ta réponse, mais il y a encore un problème, j'ai essayé de faire comme tu as dis, mais lorsque je le fais, Eclipse me met cette erreur: "The method add(Integer) is undefined for the type Object"

Voici la ligne de code que j'ai fais qui me donne l'erreur: table.get(0).add(new Integer(26));

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 05:32:32

Finalement, j'air réussis, il fallait juste caster la ligne comme ça: ((Vector) table.get(0)).add(new Integer(26));

Cependant, j'ai encore un autre problème, j'ai testé voir si ça mon Vector avait la bonne chose avec ces deux lignes:

System.out.println(table.get(0));
System.out.println(((Vector) table.get(0)).get(0));

Il me sort ça:

[26]
26

Tu sais pourquoi il met l'objet Integer dans mon vecteur qui est supposé pointer sur un autre Vector qui lui contient le numéro 26 ?

Merci, ton aide est grandement appréciée. :)

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 05:48:30

il taffiche le contenus du tableau si tajoute plusieur int sa afficheras

[26,13,14,...]

par contre Vector est obsolete depuis java 2 !!!

et sinon plus simple (evite les cast):

Vector<Vector> table = new Vector<Vector>(); // init un vector qui contiendras des objet Vector

table.add( new Vector<String>() ); // ajoute un Vector qui contiendras des string

table.get(0).add("LIGNE 1"); //plus besoin de new String("xxx")
table.get(0).add("LIGNE 2");

System.out.println(this.table.get(0).get(0));

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 05:51:49

http://pygments.org/demo/57702/

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 05:59:28

Je sais que Vector est obsolete, mais mon prof veut absolument qu'on utilise cette classe pour faire le travail et je suis pas sûr de bien comprendre le truc entre deux crochets que tu mets (on a jamais appris ça) et après quelques tests, je me suis aperçu de quelque chose:

J'ai crée le premier objet vector(le tableau), ensuite j'y ajoute l'autre objet vector à l'intérieur de mon premier vector. Ensuite j'ai fais ça:

((Vector) table.get(0)).add(new Integer(26));
((Vector) table.get(1)).add(new Integer(35));
System.out.println(((Vector) table.get(0)).get(0));
System.out.println(((Vector) table.get(0)).get(1));

et ça me sort cette erreur:

26
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
at java.util.Vector.get(Unknown Source)
at structure.VecDataCenter.set(VecDataCenter.java:83)

at structure.VecDataCenter.main(VecDataCenter.java:15
3)

Ce que j'en comprends c'est que le deuxième tableau Vector ne se crée pas d'où le fait qu'il ne prend pas plus qu'un seul objet. Je trouve ça bizarre, j'ai l'impression que Java n'aime pas ça et décide de ne pas ajouter le deuxième objet vecteur dans le premier.

Je sais pas si tu me comprends, c'est un peu compliqué à expliquer, pour être sûr, je vais copier la partie de code utile:

table = new Vector(nbCol);

for (int i = 0; i < nbLigne; i++)
{
table.add(new Vector(nbCol));
}

((Vector) table.get(0)).add(new Integer(26));
((Vector) table.get(1)).add(new Integer(35));
System.out.println(((Vector) table.get(0)).get(0));
System.out.println(((Vector) table.get(0)).get(1));

et c'est donc en exécutant ça que ça me fait l'erreur.

Tu as une idée de comment résoudre le problème ?

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 06:04:52

((Vector) table.get(0)).add(new Integer(26));
((Vector) table.get(1)).add(new Integer(35));
System.out.println(((Vector) table.get(0)).get(0));
System.out.println(((Vector) table.get(0)).get(1));

tu ajoute
0,0
1,0

mais tu veux avoir
0,0
0,1

pour les crochets <> c pour eviter les (Vector) et ajoute des objet plus facilements.

avec Vector<String> vec = new Vector<String>()

la methode get() retourne un objet String donc pas besoin de recast avec ((String)vec.get()). tu devrais les utiliser.

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 06:09:50

http://www.siteduzero.com/tutoriel-3-10421-la-genericite-en-java.html

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 06:11:35

Ah oui j'avais pas remarqué, j'aurais du mettre table.get(0).get(0).add(mon objet);

Donc si je comprends bien, les <> c'est pour dire ce que va contenir mon tableau par défaut, ça veut donc dire que si je fais Vector<Vector> vectorTest = new Vector<Vector>(); je ne pourrai pas ajouter d'Integer à mon vectorTest ?

Une gros merci pour ton aide, tu me sauve la vie. :merci:

Pseudo supprimé
Pseudo supprimé 04 novembre 2012 à 06:27:59

Si tu peux quand meme lajouter par contre vectorTest.get(x) retournera ton integer an tant que Vector tu devras donc le cast avec (Integer). aussi ta pas besoin de new Integer(26) tu met juste 26

vectorTest.add(26) // ajoute un integer avec la valeur 26

moi je ferai come ca :http://pygments.org/demo/57724/

Selrahc282
Selrahc282
Niveau 10
04 novembre 2012 à 06:32:10

Ah ouais je préfère de loin cette manière, c'est plus propre et plus simple.

Je vais me coucher moins con ce soir. :o))

Neofungamer
Neofungamer
Niveau 21
05 novembre 2012 à 20:23:17

Est-il possible de partir sur du :

Vector<Vector<Integer>> vectorTest = new Vector<Vector<Integer>>();

?

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment