Problema 3 massimi in un array di 10 num

salve , dati 10 numeri randomici , calcolare i 3 massimi , ho provato a risolverlo, e mi è venuto il seguente codice in java :

import java.util.*;
import java.lang.Math;

public class JavaApplication {
    private static Random random = new Random();

    public static void main(String[] args) {
        int[] x = new int[10];
        int max1;
        int max2;
        int max3;
        int i;
        
        max1 = 0;
        max2 = 0;
        max3 = 0;
        i = 0;
        do {
            x[i] = random.nextInt(100);
            if (x[i] > max1) {
                max3 = max2;
                max2 = max1;
                max1 = x[i];
            } else {
                if (x[i] > max2) {
                    max3 = max2;
                    max2 = x[i];
                }
                if (x[i] > max3) {
                    max3 = x[i];
                }
            }
            i = i + 1;
        } while (i < 10);
    }
}

in basso trovate in allegato il diagramma a blocchi dell’ algoritmo , pultroppo non funziona sempre , alcune volte il secondo valore e il terzo massimo si eguagliano anche se nell array sono diversi … aiutatemi perfavore

maggiorefra3

Ordina il vettore in modo crescente e i 3 massimi si trovano nelle ultime 3 posizioni :new_moon_with_face:

Credo dovrebbe essere:

if (x[i] > max2) {
                max3 = max2;
                max2 = x[i];
            }else if (x[i] > max3) {
                max3 = x[i];
            }