0
votes

Comment imprimer toutes les occurrences des deux plus grands entiers dans un tableau?

J'essaie d'imprimer les occurrences des deux nombres entiers les plus élevés dans un tableau entier mais que la sortie continue de sortir avec les trois premiers.

Integer[] scores = {4,4,4,6,6,4,2,3};
        Arrays.sort(scores, Collections.reverseOrder());

        int flag = 0;
        System.out.println(scores[0]);
        int first = scores[0];

        for (int i = 1; i < scores.length; i++) {;
            if(first == scores[i]) {
                System.out.println(scores[i]);
            }else {
                first = scores[i];
                flag++;
                System.out.println(scores[i]);
            }
            if(flag == 2) {
                break;
            }
        }


0 commentaires

3 Réponses :


1
votes

Le problème est le system.out.println (scores [i]) Après l'incrémentation du drapeau 2. Vous ne devez pas imprimer lorsqu'il s'agit du troisième numéro de la liste.

J'ai changé / simplifié le code comme xxx

il est plus intuitif à renommer d'abord comme numéro ou quelque chose d'autre comme il peut contenir le premier ou le deuxième numéro.


0 commentaires

0
votes

integer [] scores = {4,4,4,6,6,4,2,3}; Arrays.sort (Scores, Collections.Reversedon ());

    int flag = 0;
    System.out.println(scores[0]);
    int first = scores[0];
    for (int i = 1; i < scores.length; i++) {;
        if(first == scores[i]) {
            System.out.println(scores[i]);
        }else if(first != scores[i] && flag == 0) {//you need to change this 
            first = scores[i];
            flag++;
            System.out.println(scores[i]);
        }else{ // if you dont want to traverse list after getting desired output
            break;
        }

    }


0 commentaires

0
votes

Je préférerais un int [] sur integer [] et itérer le tableau trié en arrière. Vous n'avez réellement besoin d'un sinon ici, vérifiez simplement que vous n'êtes pas à la fin de la matrice - et si vous ne vérifiez pas que le score actuel diffère de la suivante (puisque nous » re itération en arrière). Vous n'avez besoin que de tester drapeau lorsque cette condition est remplie (et break après le deuxième changement). Comme, xxx


0 commentaires