IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Enregistrer des données dans un arrayList


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut Enregistrer des données dans un arrayList
    Bonsoir à tous,

    Je débute en Java et j'ai un problème que je n'arrive pas à résoudre.
    On me demande d'enregistrer des élèves et leurs classes dans arraylist, cela est-il possible ?
    J'arrive à enregistrer et à afficher, mais à chaque enregistrement le nouveau écrase l'ancien. Or j'aimerais conserver l'ensemble de mes enregistrements.

    Voici mon code, je ne demande pas la solution, mais des pistes afin de mieux comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public static void main(String[] args) {
    		String elv, cls;
    		char reponse =' ';
    		ArrayList<String> tableauDynamique = null;
     
    		do{
     
     
     
    			//Entrer le nom prénom de l'élève
    			Scanner sc =new Scanner(System.in);
    			System.out.println("Introduction de l'élève");
    			elv = sc.nextLine();
    			//Entrer la classe
    			Scanner sc1 =new Scanner(System.in);
    			System.out.println("Introduction de la classe :");
    			cls = sc1.nextLine();
    			ArrayList tableauDynamique1 = new ArrayList(Arrays.asList(elv + cls));
     
    			for (int i=0; i<tableauDynamique1.size(); i++)
    			{
    				String str = (String)tableauDynamique1.get(i);
    				System.out.println(tableauDynamique1.get(i)+"\n");
    			}
     
    				do{
    					System.out.println("Voulez-vous introduire un autre élève ? O/N ");
    					Scanner sc2 =new Scanner(System.in);
    					reponse = sc2.nextLine().charAt(0);
    				}while(reponse !='N' && reponse!='O');
     
     
    		}while(reponse=='O');	
    	}
    Je vous remercie d'avance pour l'attention que vous porterez à ma demande.

    Stu

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu crée un nouvelle list à chaque tour de boucle, que tu stocke dans tableauDynamique1 qui n'existe qu'à l'intérieur d'un tour de boucle. Or le but de l'exercice c'est de stocker les donnée dans tableauDynamique qui se trouve à l'extérieur de la boucle et que tu n'utilise absolument jamais. C'est là ton erreur. Tu ne crée que des listede 1 éléments que tu jette à la fin de la boucle.

  3. #3
    Membre habitué
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Salut,

    Merci de ta réponse, je débute en programmation Java et je n'ai plus programmé depuis 20 ans, il y a donc du taf
    Je vais analyser ce que tu me conseilles dès que je suis devant mon PC, merci encore pour ton message et pour le temps que tu m'as consacré.

  4. #4
    Membre habitué
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Salut tchize_, j'ai tenu compte de tes remarques judicieuses et voici ce à quoi j'arrive. Le résultat me semble bon, en tout cas je réponds à la question.
    Maintenant, j'aimerais sans vouloir abuser, avoir ton avis critique sur mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public static void main(String[] args) {
    		String elv, cls;
    		char reponse =' ';
    		ArrayList<String> tableauélève = new ArrayList<String>();
    		do{
    			System.out.println("Première étape, introduiser les noms et prénoms des élèves");
     
    			//Entrer le nom prénom de l'élève
    			Scanner sc =new Scanner(System.in);
    			System.out.println("Taper d'abord le nom et en suite prénom");
    			elv = sc.nextLine();
    			//Entrer la classe
    			Scanner sc1 =new Scanner(System.in);
    			System.out.println("Taper la classe :");
    			cls = sc1.nextLine();
    			tableauélève.add(elv + cls);
     
    			for (int i=0; i<tableauélève.size(); i++)
    			{
    				System.out.println(tableauélève.get(i));
    			}
     
    				do{
    					System.out.println("Voulez-vous introduire un autre élève ? O/N ");
    					Scanner sc2 =new Scanner(System.in);
    					reponse = sc2.nextLine().charAt(0);
    				}while(reponse !='N' && reponse!='O');
     
     
    		}while(reponse=='O');
    		System.out.println("Merci et au revoir ! ");	
    	}
     
    }
    Je suppose qu'il y a moyen de faire plus simple, mais pour un débutant cela me semble pas trop mal.
    Encore un tout grand merci pour ton aide.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    ça te dérange vraiment pas que les éléments de ta liste ressemblent à "Martin PaulCM2" ?

    A part ça, rien de très transcendant.

    # Il faudrait arrêter de créer un nouveau Scanner à chaque fois que tu veux lire un truc. Ton programme lit une seule console d'entrée, toujours le même System.in, donc il a besoin d'un seul Scanner pour la lire.

    Il faudrait créer un seul Scanner, au début du programme avant la boucle, et lire tout ce que tu as à lire avec lui.

    # Il faudrait des noms plus clairs que "elv" et "cls".

    # Il faudrait déclarer tes variables là où tu les initialises au lieu de le faire au début du programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nom = sc.nextLine();
    Cela évite de s'encombrer de variables à la portée inadaptées. Tu n'avais pas besoin de ces variables avant de leur donner une valeur, alors dans quel but les avoir quand même ?

    # L'inverse pour ta variable reponse qui sert de condition à la boucle globale. Tu es bien obligé de la déclarer avant puisque tu dois pouvoir la lire dans le while();

    Par contre rien ne t'oblige à lui donner une valeur avant que le premier nextLine() ne s'en occupe.

    # Pour la boucle qui affiche le contenu de ta liste, tu préféreras peut-être un for-each :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(String eleve : tableauélève) {
      System.out.println(eleve);
    }
    C'est en général considéré plus clair, et ça évite une variable artificielle i.

    # Dans beaucoup de temps, tu préféreras sans doute programmer de manière plus générique et remplacer ta liste par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> tableauélève = new ArrayList<String>();
    Certes il faut bien choisir un type de liste et tu as choisi ArrayList et c'est très bien.
    Mais ça c'est surtout au moment de créer la liste.

    Dans le reste de ton programme on se fiche de savoir si c'est une ArrayList, une LinkedList, une synchronizedList ou quoi que ce soit d'autre. Il n'y a donc aucune raison d'imposer que le type de la variable soit ArrayList. List suffit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Salut thelvin,

    Merci pour ta réponse et ton analyse, je regarde cela ce soir et je reviens vers toi. Mais tes remarques sont judicieuses, je t'avoue n'avoir jamais pensé à ça étant débutant.

    Encore un tout grand merci,

    Stu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer des données dans une base de donnée
    Par fabienlege dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/04/2007, 16h34
  2. [MySQL] Enregistrement des données dans la BD
    Par Panther dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/03/2007, 09h37
  3. Enregistrer des données dans une table à partir du code
    Par Ragnarok85 dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2007, 13h03
  4. [C#] Comment enregistrer des données dans un base Mysql ?
    Par zidenne dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/09/2006, 17h51
  5. [VB6]enregistrer des données dans un fichier
    Par tchinette42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/04/2006, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo