Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.javascript > #7894 > unrolled thread

Non riesco proprio ad uscire da questo while loop...

Started bySap7 <Sap7@nospam.no>
First post2015-08-07 23:56 +0200
Last post2015-08-08 09:00 +0200
Articles 3 — 2 participants

Back to article view | Back to it.comp.lang.javascript


Contents

  Non riesco proprio ad uscire da questo while loop... Sap7 <Sap7@nospam.no> - 2015-08-07 23:56 +0200
    Re: Non riesco proprio ad uscire da questo while loop... Andrea Scartabelli <nome.cognome@dallepartidibigg.com> - 2015-08-08 08:41 +0200
      Re: Non riesco proprio ad uscire da questo while loop... Sap7 <Sap7@nospam.no> - 2015-08-08 09:00 +0200

#7894 — Non riesco proprio ad uscire da questo while loop...

FromSap7 <Sap7@nospam.no>
Date2015-08-07 23:56 +0200
SubjectNon riesco proprio ad uscire da questo while loop...
Message-ID<mq39in$10i$1@speranza.aioe.org>
Sono incastrato in un loop e non riesco a capirne il motivo.


Praticamente devo creare un numero random ed uscire dal ciclo solo se 
questo numero non è contenuto in un'altra array.
Se lo è, randomizzo un ulteriore numero fino al verificarsi della 
condizione precedente.

Questo è il mio codice.

     var i = 0;
     do
     {
         indice = Math.floor((Math.random() * max) + 1);
         if ($.inArray(indice, GiocatoriEstratti) < 0) {
             i = 1;
         }
     }
     while (i != 0);

    //Altro codice da eseguire una volta uscito dal loop...



L'ho modificato 10000 volte ma il while mi va in un loop infinito e non 
esce mai.

Dove sbaglio?

[toc] | [next] | [standalone]


#7895

FromAndrea Scartabelli <nome.cognome@dallepartidibigg.com>
Date2015-08-08 08:41 +0200
Message-ID<mq48aa$303$1@virtdiesel.mng.cu.mi.it>
In reply to#7894
On 07/08/15 23:56, Sap7 wrote:
> Praticamente devo creare un numero random ed uscire dal ciclo solo se
> questo numero non è contenuto in un'altra array.
> Se lo è, randomizzo un ulteriore numero fino al verificarsi della
> condizione precedente.
>
> Questo è il mio codice.
>
>      var i = 0;
>      do
>      {
>          indice = Math.floor((Math.random() * max) + 1);
>          if ($.inArray(indice, GiocatoriEstratti) < 0) {
>              i = 1;
>          }
>      }
>      while (i != 0);
>
> L'ho modificato 10000 volte ma il while mi va in un loop infinito e non
> esce mai.
>
> Dove sbaglio?

Ti sei incasinato con quella variabile "i": non viene trovato il numero, 
"i" diventa uno e non cambia più impedendo l'uscita dal ciclo che 
continua finché "i" è diverso da zero.

Eliminando la variabile "i":

do {
     n = random();
} while (numeriEsistenti.indexOf(n) !== -1);

Ho usato "Array.prototype.indexOf" visto che esiste anche nel vecchio 
IE9 
(<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf>), 
ma vedi tu se usare jQuery.

[toc] | [prev] | [next] | [standalone]


#7896

FromSap7 <Sap7@nospam.no>
Date2015-08-08 09:00 +0200
Message-ID<mq49eh$ohb$1@speranza.aioe.org>
In reply to#7895
Il 08/08/2015 08.41, Andrea Scartabelli ha scritto:
> do {
>      n = random();
> } while (numeriEsistenti.indexOf(n) !== -1);

Ti ringrazio, ora ho risolto e ho anche capito.
Grazie!

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.javascript


csiph-web