Java pour la boucle / jvm cassé?!? L'opérateur d'incrément à l'intérieur de la boucle n'incrémente pas après 1


Frapper le bit de code le plus étrange dans le débogueur et l'exécution. J'ai une ArrayList remplie de 60 objets. Lorsque j'itère sur cette liste et vérifie l'unicité des cartes à l'intérieur, l'opérateur d'incrément ne semble pas fonctionner?!?

C'est mon code qui vérifie:

public boolean isPresentOnce(PlayingCard cardToCheck) {
    int foundTimes = 0;
    for (int i=0;i<playingCards.size();i++) {
        if (playingCards.get(i).equals(cardToCheck)) {
            foundTimes++;
            System.out.println("Found the card:"+foundTimes+":"+i);
        }
    }
    return foundTimes == 1;
}

J'obtiens cette sortie:

Found the card:1:0
Found the card:1:1
Found the card:1:2
Found the card:1:3
<<SNIP>>
Found the card:1:56
Found the card:1:57
Found the card:1:58
Found the card:1:59

Pourquoi mon compteur n'est-il pas incrémenté au-dessus de 1?

J'ai essayé de nettoyer mon espace de travail, j'ai essayé de faire une installation maven clean, en alternant le code par en utilisant +=1. et en utilisant une instruction double if un peu plus complexe. Rien ne semble fonctionner, ce coin du code semble en quelque sorte être cassé. Lors de l'utilisation de l'instruction double if, une instruction return ne quitte tout simplement pas la méthode.

Quelques informations supplémentaires:

Utilisation d'IntelliJ 13.1.5 avec JRE 1.6.0_65 64bits avec HotSpot sur un MacBook Pro exécutant 10.9.5.

La population ressemble à ceci:

private ArrayList<PlayingCard> generateCards() {
    ArrayList<PlayingCard> cards = new ArrayList<PlayingCard>();
    for (int i = 0; i < 60; i++) {
        PlayingCard playingCard = new PlayingCard();
        List<CardImage> images = new ArrayList<CardImage>();
        images.add(new CardImage(TokenColor.Blue, TokenType.Book));
        images.add(new CardImage(TokenColor.Gray, TokenType.Chair));
        playingCard.addImages(images);
        cards.add(playingCard);
    }
    return cards;
}

Toutes mes excuses pour le code merdique, c'est un projet de passe-temps; -)

Author: SunSear, 2014-10-16

1 answers

Donc si je vous comprends bien, vous voulez vérifier si chaque carte n'est qu'une seule fois dans votre deck? Droit? Et maintenant vous êtes confus au sujet de la sortie?

Donc la sortie est par exemple:

Found the card:1:2

Ce Qui signifie qu'il a trouvé la carte à la position 2!, incrémenté le compteur d'un et donc vous obtenez la sortie.

Le premier 1 est la fois où la carte a été trouvée et 2 est la position dans la liste. Donc tout va bien!

 -1
Author: Icewind, 2014-10-16 13:25:14