[debutant] enumeration et tableau de String

[debutant] enumeration et tableau de String - Java - Programmation

Marsh Posté le 28-07-2005 à 10:33:16    

Voila, j'ai une énumération contenant plusieurs chaine de charactere que je voudrais stocké dans un tableau de string. Mais comme je ne connais pas la taille de mon énumération, je ne peux pas créer le tableau de String. J'ai pensé essayer d'utilisé une ArrayList pour passé de l'énumeration ou tableau de String, mais ,comme je devais m'y attendre, le compilateur ne reconnais pas comme String l'objet renvoyer par l'ArrayList.


Message édité par blaise_laporte le 28-07-2005 à 17:07:35
Reply

Marsh Posté le 28-07-2005 à 10:33:16   

Reply

Marsh Posté le 28-07-2005 à 11:05:10    


Excuse-moi, mais quel est le type exact de tes données de départ ?
 
Nicolas

Reply

Marsh Posté le 28-07-2005 à 11:16:33    

et surtout pour quelle raison veux tu laisser tomber ton enumération?
tu n'arrives pas à faire ce que tu veux avec?
 
a part ça si je comprends bien ta phrase

blaise_laporte a écrit :

le compilateur ne reconnais pas comme String l'objet renvoyer par l'ArrayList.


il te sera surement utile de faire une petite recherche sur le casting d'objet java...

Reply

Marsh Posté le 28-07-2005 à 11:31:16    

ou tu fabrique toi même un objet : TableauDeString
 
apres tu fais une méthode de type void ajoute(String)
que tu appel montablo.ajoute(monString);


---------------
yop yop
Reply

Marsh Posté le 28-07-2005 à 11:40:51    

A la base, mes données sont des String compris dans une énumération.
 
Une énumération est inutilisable telle qu'elle. J'ai besoin de transformé cette énumération en tableau de String afin de pouvoir mieu manipuler les chaine.
 
J'ai pensé faire un nouvelle objet tableauDeString, mais j'aimerais autant que possible évité cette solution.
 
D'autant que j'ai crus comprendre que normallemnt, le compilateur reconnais tout seul quand il a a faire à une String.

Reply

Marsh Posté le 28-07-2005 à 11:44:39    


Je ne suis pas sûr de bien comprendre ton problème.
Je veux bien t'aider, mais encore faudrait-il que tu répondes à ma question de 11h05 : quel est le type Java de cette énumération ? (EnumMap, EnumSet, ...)
 
Nicolas

Reply

Marsh Posté le 28-07-2005 à 11:56:09    

Ma ligne de code qui declare l'enumeration:
 

Code :
  1. Enumeration portList = CommPortIdentifier.getPortIdentifiers();


 
getPortIdentifiers renvoi une énumération de String contenant les noms des différentes comm disponible sur l'ordi.

Citation :

Returns:
    an Enumeration object that can be used to enumerate all the ports known to the system


 
Et c'est cette liste que je desire récuperer dans un tableau de String
 
Aprés, j'avoue ne pas avoir vue dans ce cas précis qu'une énumeration pouvait avoir différent type; ce qui fais que ma question n'est peut être pas trés claire...
 
 

Reply

Marsh Posté le 28-07-2005 à 12:02:20    

bon bah perso j'utilise jamais ni enumération ni objet tt fait de ce genre jtrouve ca bcp plus propre et plus adapter de coder ces objets en bas niveau... donc la javouerai que je ne peut pas t'aider. di moi si tu ve de l'aide pour ma solution... en attendant bon courage


---------------
yop yop
Reply

Marsh Posté le 28-07-2005 à 12:04:31    


Merci de ta réponse.
Le type de tes données n'était donc pas une énumération mais une Enumeration  :wahoo:  :wahoo:  
 
Une méthode simple :
- parcourir l'Enumeration une fois (par hasMoreElement() and nextElements()) pour en connaître la taille ;
- créer le tableau ;
- parcourir l'Enumeration une seconde fois pour remplir le tableau.
 
Nicolas

Reply

Marsh Posté le 28-07-2005 à 12:15:59    

énumération différent d'Enumeration!!! Va faloir que je revise ça... Merci.
 
Par contre, je croyais que lorsque l'on parcourait, ne serai-ce qu'une seule fois l'Enumeration, celle-ci se vidait. Erreur de ma part?

Reply

Marsh Posté le 28-07-2005 à 12:15:59   

Reply

Marsh Posté le 28-07-2005 à 12:22:20    

bah oui

Reply

Marsh Posté le 28-07-2005 à 12:29:46    

cela m'a simplifier les choses, mais j'ai toujours un probleme.
Cette ligne de code

Code :
  1. temp[i]= portList.nextElement();


 
me renvoie cette erreur:

Citation :

GestionComm.java:27: incompatible types
found   : java.lang.Object
required: java.lang.String
                        temp[i]= portList.nextElement();
                                                     ^

Reply

Marsh Posté le 28-07-2005 à 12:48:13    

(1)

Par contre, je croyais que lorsque l'on parcourait, ne serai-ce qu'une seule fois l'Enumeration, celle-ci se vidait. Erreur de ma part?

Vraiment ? Je ne savais pas. Dans ce cas là, utilise une ArrayList.
 
(2) Ton message d'erreur est normal : ton Enumeration semble contenir des Object, et tu veux remplir un tableau de String. Tu dois "caster" :

Code :
  1. temp[i]= (String) portList.nextElement();


Nicolas

Reply

Marsh Posté le 28-07-2005 à 13:58:25    

C'est bon, j'ai trouvé comment faire.
 
Je n'ai plus qu'une erreur à l'execution.
 
En tout cas, merci a vous pour votre aide.
[:athome]

Reply

Marsh Posté le 28-07-2005 à 16:33:18    

Nicolas_75 a écrit :

Merci de ta réponse.
Le type de tes données n'était donc pas une énumération mais une Enumeration  :wahoo:  :wahoo:  
 
Une méthode simple :
- parcourir l'Enumeration une fois (par hasMoreElement() and nextElements()) pour en connaître la taille ;
- créer le tableau ;
- parcourir l'Enumeration une seconde fois pour remplir le tableau.
 
Nicolas


 
Tu es sur que l'Enumeration ne se vide pas lorsque je la parcoure la premiere fois. Parce que quand je la parcoure la deuxieme fois, elle est vide...
 
Voici le code

Code :
  1. portList = CommPortIdentifier.getPortIdentifiers();
  2. for(i =0; portList.hasMoreElements(); portList.nextElement()){
  3. i++;
  4. System.out.println("i=" +i);
  5. }
  6. temp = new String[i];
  7. CommPortIdentifier portId;
  8. for (i = 0;portList.hasMoreElements(); i++){
  9. portId = (CommPortIdentifier)portList.nextElement();
  10. temp[i]= portId.getName();
  11. System.out.println("port" + i + "=" + temp[i]);
  12. }


 
et voici ma sortie:
 

Citation :


i=1
i=2
i=3


 
Et donc, il ne rentre pas dans la deuxieme boucle for, ce qui me laisse pensé que l'Enumeration est vide


Message édité par blaise_laporte le 28-07-2005 à 16:34:44
Reply

Marsh Posté le 28-07-2005 à 16:37:55    

OK. Dans ce cas, parcours l'Enumeration une seule fois, stocke les éléments dans une Array List. Et, à la fin, convertis l'ArrayList en tableau.
 
Nicolas

Reply

Marsh Posté le 28-07-2005 à 16:41:58    

Nicolas_75 a écrit :

OK. Dans ce cas, parcours l'Enumeration une seule fois, stocke les éléments dans une Array List. Et, à la fin, convertis l'ArrayList en tableau.
 
Nicolas


 
Ce qui reviens à mon premier message, comment faire pour convertir l'ArrayListe en tableau de Strin? 8)
 
 
EDIT: laisser tombé, je crois avoir trouvé
 
Ou l'art de posé les questions trop vite.... :bounce:  :D


Message édité par blaise_laporte le 28-07-2005 à 16:43:28
Reply

Marsh Posté le 28-07-2005 à 17:00:03    


Si tu es en Java 1.5, tu transformes en la parcourant ton Enumeration en ArrayList<String> (avec un cast à chaque fois). Ensuite tu fais un bête toArray().
 
Nicolas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed