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; } }
3 Réponses :
Le problème est le J'ai changé / simplifié le code comme p> il est plus intuitif à renommer system.out.println (scores [i]) code> 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.
d'abord code> comme numéro code> ou quelque chose d'autre comme il peut contenir le premier ou le deuxième numéro. p> p>
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; } }
Je préférerais un int [] code> sur
integer [] code> et itérer le tableau trié en arrière. Vous n'avez réellement besoin d'un
sinon code> 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 code> lorsque cette condition est remplie (et
break code> après le deuxième changement). Comme,