Java Problème avec la collection ArrayList

Résolu/Fermé
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 24 mars 2009 à 13:54
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 24 mars 2009 à 16:43
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 :

	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:

13 réponses

Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 15:10
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");
1
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 15:12
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 :

 
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/"
1
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 13:57
essai comme sa :

if((liste.get(0) < 127) && (liste.get(0) > 0)) {
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:03
Ben non le blem n'est pas dans la syntaxe mais dans la liste chainé mise comme condition
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 14:08
Et sa te met quoi comme erreur exactement?
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:11
J'ai essayé autre chose :

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)
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:19
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 :(
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 14:22
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
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:33
Tu me demande de caster alors ? Un instant je vais essayer
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:43
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';
		}
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 14:50
Ben apres une premiere lecture ton bout de code m'a l'air correct
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 14:51
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.
0
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 96
24 mars 2009 à 15:14
ah ben bravo!!!
j'etais en train de proposer un truc un peu dans le meme genre!!!
mais en plus compliquer!!
(faut vraiment que je me remette a java!!! lol)
0
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 70
24 mars 2009 à 16:43
Merci pour ton aide c'est très gentil :D
0