134 votes

Dernière itération de la boucle en java

Y a-t-il un moyen de déterminer si la boucle est une itération pour la dernière fois. Mon code ressemble à ceci :

Maintenant, la chose est que je ne veux pas ajouter la virgule dans la dernière itération. Maintenant est-il possible de déterminer si c’est la dernière itération ou suis-je coincé avec la boucle for ou utilisant un compteur externe pour suivre à la trace.

220voto

Jon Skeet Points 692016

Une autre alternative est d'ajouter la virgule avant d'ajouter que j', mais pas sur la première itération. (Merci de ne pas utiliser "" + i, en passant, vous n'avez pas vraiment envie de concaténation ici, et StringBuilder a un parfaitement bon append(int) surcharge.)

int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();

for (int i : array) {
    if (builder.length() != 0) {
        builder.append(",");
    }
    builder.append(i);
}

La bonne chose à ce sujet est qu'il fonctionne avec n'importe quel Iterable - vous ne pouvez pas toujours l'indice de choses. ("Ajouter la virgule, puis l'enlever à la fin" est une suggestion intéressante lorsque vous êtes vraiment en utilisant StringBuilder - mais il ne fonctionne pas pour des choses comme l'écriture des ruisseaux. C'est peut-être la meilleure approche à ce problème exact.)

143voto

toolkit Points 27248

Une autre manière de faire ceci :

Non si test requis  :-)

Et depuis «, » des objets String internés, aucune nouvelle sera créée au sein de la boucle.

BTW : Si vous ne me dérange pas la chaîne ressemblant à vous pouvez utiliser

39voto

Dinah Points 15711

Il pourrait être plus facile d’ajouter toujours. Et puis, lorsque vous avez terminé avec votre boucle, il suffit de supprimer le dernier caractère. Tonnes de moins conditionnels comme ça aussi.

Vous pouvez utiliser de avec indice étant``

31voto

Omar Kooheji Points 14073

Peut-être que vous utilisez le mauvais outil pour le travail.

C’est plus manuel que ce que vous faites, mais c’est une façon plus élégante et sinon un peu « old school »

15voto

Phil H Points 10133

Il s’agit presque d’une répétition de cette question de StackOverflow. Ce que vous voulez est StringUtilset à appeler la méthode join .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X