Ciclo While che prende i numeri in base al rango

di il
5 risposte

Ciclo While che prende i numeri in base al rango

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

  • Re: Ciclo While che prende i numeri in base al rango

    java.utils.Arrays.sort(myNum);
    Poi stampi gli ultimi due partendo dall'ultimo
  • Re: Ciclo While che prende i numeri in base al rango

    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.
  • Re: Ciclo While che prende i numeri in base al rango

    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
  • Re: Ciclo While che prende i numeri in base al rango

    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.
  • Re: Ciclo While che prende i numeri in base al rango

    Grazie @andbin
Devi accedere o registrarti per scrivere nel forum
5 risposte