-1
votes

Pourquoi mon ArrayList imprimer le premier objet 3 fois?

Je suis relativement nouveau à Java. Je pratiquais un exercice où nous explorons le comportement polymorphe des instances de sous-classe et de superclasse. Cet exercice s'appuie sur les concepts de classes et d'interfaces abstraites. Les arraylistes sont introduits dans cet exercice. L'une des questions nous oblige à créer une arrayliste d'objets de travail écrites appelés produits et ajoutez les objets appropriés à la flambée de l'arrêté.

Mon problème est que le tableau conserve l'impression du premier élément 3 fois puis imprime le reste des éléments.

Quelqu'un pourrait-il expliquer pourquoi cela continue à se produire?

Edit: J'ai réalisé l'erreur que je faisais grâce à vos gars! J'ai changé la boucle pour xxx

à xxx

Cette image montre comment toutes les classes sont connectées

voici le code: xxx

Ceci est la sortie


2 commentaires

Votre boucle n'a pas de crochets, alors seule la première déclaration est exécutée. Pourquoi utilisez-vous une boucle du tout si vous êtes en train de coduler les déclarations d'impression?


Pourquoi ne pas imprimer w?


6 Réponses :


-1
votes
for (WrittenWork w: products){
   System.out.println(w.toString()); 
}

0 commentaires

0
votes

Il devrait être:

  for(WrittenWork w: products)
       System.out.println(w.toString());

  }


0 commentaires

-1
votes

Essayez ceci:

for (WrittenWork w: products){
   System.out.println(w.toString()); 
}


0 commentaires

0
votes

Vous êtes itération sur la flambée, mais imprimez w1 code>, w2 code> et w3 code> sur chaque itération. Comme les autres ont souligné l'impression w code> dans chaque itération qui pointe vers l'élément correspondant à l'itération.

for (WrittenWork w: products){
   System.out.println(w.toString()); 
}


0 commentaires

2
votes

autre que d'avoir utilisé des supports utilisés pour identifier correctement le bloc pour , vous avez une faille logique dans votre petit morceau de code.

Vous avez écrit

Le tableau conserve l'impression du premier élément 3 fois puis imprime. le reste des articles

Cela me conduit à penser que votre code ne représente pas vraiment ce que vous voulez réellement accomplir.
C'est totalement normal au début, ne vous inquiétez pas. Il semble que vous souhaitiez imprimer tous les écrites .

car vous avez utilisé un ( amélioré ) pour boucle xxx

mais vous n'avez jamais pris en compte la variable locale w

Que se passe-t-il en arrière-plan, c'est qu'un Itérateur ( Javadoc < / a>) est créé pour vous et chaque itération L'élément suivant dans la liste la liste est donné via w .

Il vous suffit d'utiliser cette variable w pour imprimer tous les éléments de produits .
Le itérateur s'éputilisera et La boucle s'arrêtera.


pour vos connaissances, ce style de boucle xxx

est équivalent à xxx

Vous pouvez voir la condition vérifiée est itérator.hasnext (); .


0 commentaires

1
votes
for(WrittenWork w: products)
       System.out.println(w1.toString());
       System.out.println(w2.toString());
       System.out.println(w3.toString());

   }
In a program exection fashion it may make you feel right and it runs but the logical issue incurs that if you opt for printing all objects with segregate  System.out.println methods, then why did you use for(each)-loop?Besides, you don't need to call toString() method called implicitly and automatically if an object reference is passed to System.out.println method

0 commentaires