Rechercher : dans
Par :

Java Problème avec la collection ArrayList

Dernière réponse le 24 mar 2009 à 16:43:12 Chabanus, le 24 mar 2009 à 13:54:37 
 Signaler ce message aux modérateurs

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 Il faut faire partie de la solution et non du problème ;-)
Configuration: Windows Vista
Firefox 3.0.7

Meilleures réponses pour « Java Problème avec la collection ArrayList » dans :
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Supprimer les anciennes versions de Java avec JavaRa VoirJavaRa A propos de la gestion des machines virtuelles Java Présentation de JavaRa Exemple de rapport émis par JavaRa A propos de la gestion des machines virtuelles Java Pour des mises à jour ciblées de java Sun a finalement donné une...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

batoune, le 24 mar 2009 à 13:57:00

Essai comme sa :

if((liste.get(0) < 127) && (liste.get(0) > 0)) {

Répondre à batoune

2

Chabanus, le 24 mar 2009 à 14:03:12

Ben non le blem n'est pas dans la syntaxe mais dans la liste chainé mise comme condition Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

3

batoune, le 24 mar 2009 à 14:08:20

Et sa te met quoi comme erreur exactement?

Répondre à batoune

4

Chabanus, le 24 mar 2009 à 14:11:14

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)
Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

5

Chabanus, le 24 mar 2009 à 14:19:11

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 :( Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

6

batoune, le 24 mar 2009 à 14:22:01

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

Répondre à batoune

7

Chabanus, le 24 mar 2009 à 14:33:30

Tu me demande de caster alors ? Un instant je vais essayer Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

8

Chabanus, le 24 mar 2009 à 14:43:10

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 faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

9

batoune, le 24 mar 2009 à 14:50:01

Ben apres une premiere lecture ton bout de code m'a l'air correct

Répondre à batoune

10

Chabanus, le 24 mar 2009 à 14:51:35

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. Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

11

Chabanus, le 24 mar 2009 à 15:10:23

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");
Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus

12

batoune, le 24 mar 2009 à 15:12:24

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 : "http://java.sun.com/j2se/1.5.0/docs/api/"

Répondre à batoune

13

batoune, le 24 mar 2009 à 15:14:06

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)

Répondre à batoune

14

 Chabanus, le 24 mar 2009 à 16:43:12

Merci pour ton aide c'est très gentil :D Il faut faire partie de la solution et non du problème ;-)

Répondre à Chabanus