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 :

parcourir plusieurs liste dans une seule boucle for


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2015
    Messages : 55
    Par défaut parcourir plusieurs liste dans une seule boucle for
    Bonjour,

    Je me demande si il est possible de mettre les deux boucles for de mon code en une seule boucle for (en groupant les conditions), qu'en pensez vous svp :

    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
    public class FaireDesFormes
    {
    	public static void main(String[] args)
    	{
    //		Forme nouvelleForme1 = new Forme();
    //		Forme nouvelleForme2 = new Forme(400,500,5);
    		Rectangle nouveauRectangle1 = new Rectangle(40,50,4,2,11);
    		Triangle nouveauTriangle1 = new Triangle(40,50,4,2,11,20,21); 
    		Triangle nouveauTriangle2 = new Triangle(400,500,5,10,11,20,21); 
    		nouveauTriangle2.deplacer(10,20);
     
    		for (Triangle t : nouveauTriangle1.ListesDesTriangles)
    		{
    			t.afficher();
    		} 
     
    		for (Rectangle t : nouveauRectangle1.ListesDesRectangles)
    		{
    			t.afficher();
    		} 
     
    	}
    }
    Merci
    Cédric

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Ma foi, si Triangle et Rectangle héritent d'un type commun qui définit afficher(), et qu'on appelait ce type commun Forme,

    tu pourrais construire une ArrayList<Forme> dans laquelle tu ajoutes avec addAll() les Triangles, puis les Rectangles, et après tu as plus qu'à faire une boucle sur cette ArrayList qui les contient tous.

    ... Mais ce serait plus simple, au lieu d'une boucle, de définir un Stream des deux listes et de faire forEach() dessus.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2015
    Messages : 55
    Par défaut
    Merci, du coup, j'ai crée une liste de <Forme> et j'ai rajouté dans le constructeur de la forme le fait de rajouter les références de l'objet à la liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public static List<Forme> ListesDesFormes = new ArrayList<Forme>();
     
    	public Forme()
    	{
    		setX();
    		setY();
    		setCouleur();
    		ListesDesFormes.add(this);
    	}
    Ensuite, j'ai rajouter la methode afficher() dans la classe Forme (mais qui ne peut acceder que aux donnees de la classe Forme pas des sous classes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public void afficher()
    	{
    		System.out.println("*** SYNTHESE FORME ***");
    		System.out.println(" point de reference x :"+getX());
    		System.out.println(" point de reference y :"+getY());
    	}
    Et ensuite quand je fais tourner le main:
    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
    public class FaireDesFormes
    {
    	public static void main(String[] args)
    	{
    //		Forme nouvelleForme1 = new Forme();
    //		Forme nouvelleForme2 = new Forme(400,500,5);
    		Rectangle nouveauRectangle1 = new Rectangle(40,50,4,2,11);
    		Triangle nouveauTriangle1 = new Triangle(40,50,4,2,11,20,21); 
    		Triangle nouveauTriangle2 = new Triangle(400,500,5,10,11,20,21); 
    		nouveauTriangle2.deplacer(10,20);
     
    		for (Forme f : nouveauTriangle2.ListesDesFormes)
    		{
    			f.afficher();
    		}
     
    	}
    }
    Et ca fait bien appel aux méthodes des sous classes (car les méthodes des sous classes sont prioritaires sur les méthodes des super classes quand elles ont le même nom "afficher()" en l'occurrence.

    et ca me donne ca:

    C:\Users\CLV\Documents\Workspace> javac FaireDesFormes.java

    C:\Users\CLV\Documents\Workspace>java FaireDesFormes
    *** SYNTHESE RECTANGLE ***
    point de reference x :40
    point de reference y :50
    couleur :4
    longueur :2
    largeur :11
    *** SYNTHESE TRIANGLE ***
    point de reference x :40
    point de reference y :50
    x1 :2
    y1 :11
    x2 :20
    y2 :21
    couleur :4
    *** SYNTHESE TRIANGLE ***
    point de référence x :410
    point de référence y :520
    x1 :20
    y1 :31
    x2 :30
    y2 :41
    couleur :5

    Donc c'est ce que je voulais.

    @thelvin, n'hésite pas si tu vois un quelque chose à corriger dans mon raisonnement.

    Merci et bonne journée
    Cédric

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

Discussions similaires

  1. Parcourir plusieurs tableaux dans une boucle foreach
    Par snorky94 dans le forum Langage
    Réponses: 8
    Dernier message: 06/02/2014, 12h34
  2. Supprimer plusieurs objet en une et une seule boucle for
    Par Beber_lechat dans le forum Langage
    Réponses: 5
    Dernier message: 23/09/2010, 09h44
  3. [AC-2003] Requête sur plusieurs tables dans une seule liste
    Par tarnx dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2009, 11h36
  4. [AC-2007] Plusieurs requêtes dans une seule liste déroulante
    Par Razorback dans le forum IHM
    Réponses: 5
    Dernier message: 29/04/2009, 14h09
  5. selectionner plusieurs choix dans une seule liste de choix
    Par outland42 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/04/2009, 19h01

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