Ciclo While che prende i numeri in base al rango

di Anonimizzato27556 il
5 risposte
Ciao a tutti,
c'è una cosa che non mi sta riuscendo, cerco di spiegarmi.

Ho un array di tre numeri 1.5 - 3.0 - 2.2

Come faccio a dire a java: scrivimi i primi due numeri più gramdi dei tre presenti nell'Array.

  double i= 1;
  double[] myNum = {1.5, 3.0, 2.2};  
while (i <= 2) {
            System.out.println("Numeri " ???);
            i++;
        }
Risultato atteso (i primi due numeri dell'Array a partire dal più grande)
3.0
2.2

5 Risposte

  • java.utils.Arrays.sort(myNum);
    Poi stampi gli ultimi due partendo dall'ultimo
  • ges64 ha scritto:


    Come faccio a dire a java: scrivimi i primi due numeri più gramdi dei tre presenti nell'Array.
    Allora, le soluzioni sono almeno 2:

    a) Applichi un "ordinamento" dell'array e poi prendi i due valori maggiori (a quale estremo dell'array, dipende dal senso dell'ordinamento). Nella classe java.util.Arrays c'è già il metodo sort ma presumo che essendo questo un "esercizio" forse non è lecito usarlo. L'alternativa è che implementi tu un algoritmo di ordinamento (banalmente, il noto BubbleSort che è "scarso" come prestazioni ma è facile da fare).

    b) Tieni due variabili max1 e max2 e poi scorri l'array e in base a dei confronti (su cui devi ragionare TU), aggiorni man mano max1/max2 affinché tengano sempre i due valori "max" in ogni momento. Alla fine ... sono i due max assoluti.
  • Ciao ,
    @andbin, le tue indicazioni mi sembrano delle buone escamotages che proverò.
    @ Weierstrass, la tua è una soluzione più semplice però per me - novello di java - è un pò complicato gestire il ciclo che riguarda un Array con il metodo Sort al contrairio, cioè dal più grande al più piccolo, potresti darmi qualche indicazione più specifica?

    Grazie
  • ges64 ha scritto:


    è un pò complicato gestire il ciclo che riguarda un Array con il metodo Sort al contrairio, cioè dal più grande al più piccolo, potresti darmi qualche indicazione più specifica?
    Se ordini con il Arrays.sort, non c'è poi bisogno di fare un ciclo per stampare. Basta prendere l'ultimo elemento e il penultimo.
  • Grazie @andbin
Devi accedere o registrarti per scrivere nel forum
5 risposte