Java Problème avec la collection ArrayList
Résolu
Chabanus
Messages postés
978
Date d'inscription
Statut
Membre
Dernière intervention
-
Chabanus Messages postés 978 Date d'inscription Statut Membre Dernière intervention -
Chabanus Messages postés 978 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye de traduire un programme avec des tableaux en liste chainé en utilisant la collection arraylist et dès le début je suis tomber sur une impasse qui ne me permet pas de continuer la traduction :
erreur au niveau de la condition, si on pouvait m'aider merci
J'essaye de traduire un programme avec des tableaux en liste chainé en utilisant la collection arraylist et dès le début je suis tomber sur une impasse qui ne me permet pas de continuer la traduction :
ArrayList liste = new ArrayList(); liste.add(Integer.parseInt(str[0])); liste.add(Integer.parseInt(str[1])); liste.add(Integer.parseInt(str[2])); liste.add(Integer.parseInt(str[3])); char classe = ' '; if(liste.get(0) < 127 && liste.get(0) > 0) { System.out.println("Votre addresse ip est de Catégorie A"); classe = 'A'; }
erreur au niveau de la condition, si on pouvait m'aider merci
A voir également:
- Java Problème avec la collection ArrayList
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
13 réponses
J'ai utilisé la généricité et c'est ok ;)
ArrayList<Integer> liste= new ArrayList<Integer>(); liste.add(Integer.parseInt(str[0])); liste.add(Integer.parseInt(str[1])); liste.add(Integer.parseInt(str[2])); liste.add(Integer.parseInt(str[3])); char classe = ' '; if(liste.get(0) < 127 && liste.get(0) > 0) { System.out.println("Votre addresse ip est de Catégorie A");
Sa fait longtemp que j'ai pas fait de java, du coup je suis pas trop sur de moi, mais si je comprend bien ton probleme, tu voudrais remplacer sa :
par l'utilisation d'une array liste?
un peu comme dans cet exemple :
et le probleme dans cette exemple c'est que java ne permet pas de caster un element d'un arraylist en string.
essaye peut etre en déclarant ton array liste comme sa :
si sa marche il y aurra sans doute moin de soucis pour passer d'un element de l'ArrayListe a un string puis a un int comme tu essai de le faire dans cette ligne :
j'espere que sa t'aide un peu.
sinon tu peu toujour essayer de trouver des solution sur l'api java : "https://docs.oracle.com/javase/1.5.0/docs/api/"
int categorie = Integer.parseInt(str[0]); int H1 = Integer.parseInt(str[1]); int H2 = Integer.parseInt(str[2]); int H3 = Integer.parseInt(str[3]);
par l'utilisation d'une array liste?
un peu comme dans cet exemple :
ArrayList liste = new ArrayList(); liste.add(ip.split("\\.")) int categorie = Integer.parseInt((String) liste.get(0)); if(categorie < 127 && categorie > 0) { System.out.println("Votre addresse ip est de Catégorie A"); classe = 'A'; }
et le probleme dans cette exemple c'est que java ne permet pas de caster un element d'un arraylist en string.
essaye peut etre en déclarant ton array liste comme sa :
ArrayList <String> liste = new ArrayList();
si sa marche il y aurra sans doute moin de soucis pour passer d'un element de l'ArrayListe a un string puis a un int comme tu essai de le faire dans cette ligne :
int categorie = Integer.parseInt((String) liste.get(0));
j'espere que sa t'aide un peu.
sinon tu peu toujour essayer de trouver des solution sur l'api java : "https://docs.oracle.com/javase/1.5.0/docs/api/"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé autre chose :
exécution :
Entrez une adresse ip !
23.22.33.22
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
at ip.main(ip.java:28)
ArrayList liste = new ArrayList(); liste.add(ip.split("\\.")) int categorie = Integer.parseInt((String) liste.get(0)); if(categorie < 127 && categorie > 0) { System.out.println("Votre addresse ip est de Catégorie A"); classe = 'A'; }
exécution :
Entrez une adresse ip !
23.22.33.22
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
at ip.main(ip.java:28)
Je pense que ce n'est pas possible d'utiliser les collections dans ce genre de programme étant donné quelles acceptent n'importe quelle type et je ne sais pas comment faire la distinctions entre les types dans le cas des listes chainés :(
La visiblement le probleme viens du fait que JAVA ne permet pas de caster le contenu de ta liste qui est du type : "Ljava.lang.String" en un type "java.lang.String".
Tu devrais peux etre essayer mettre "liste.get(0)" dans une variable String intermédiaire en fesant un truc du genre: String varIntermediaire = (liste.get(0)).toString();
et apres tu fais: int categorie = Integer.parseInt(varIntermediaire);
Je suis pas sur que sa marche mais tu peux essayer sa
Tu devrais peux etre essayer mettre "liste.get(0)" dans une variable String intermédiaire en fesant un truc du genre: String varIntermediaire = (liste.get(0)).toString();
et apres tu fais: int categorie = Integer.parseInt(varIntermediaire);
Je suis pas sur que sa marche mais tu peux essayer sa
Les listes chainés sont dynamique, cette démarche est trop long, tiens regarde le bout de code stp :
System.out.println("Entrez une adresse ip !"); Scanner sc = new Scanner(System.in); String ip = sc.nextLine(); if(!ip.matches("^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$")) System.err.println("Votre addresse ip est incorrecte"); else { String str[]=ip.split("\\."); int categorie = Integer.parseInt(str[0]); int H1 = Integer.parseInt(str[1]); int H2 = Integer.parseInt(str[2]); int H3 = Integer.parseInt(str[3]); char classe = ' '; if(categorie < 127 && categorie > 0) { System.out.println("Votre addresse ip est de Catégorie A"); classe = 'A'; }
Il fonctionne le programme, mais il est statique avec des tableaux, moi je veux y inclure les collections si c'est possible dans ce code.