Quote:
|
Originariamente inviato da noodles83
for(int i=0;i<array.length;i++){
array[i]=(int) Math.random() * n;
}
invece mi viene un array di tutti 0. perchè? 
|
Ah .... classico errore dovuto alla non conoscenza della precedenza degli operatori!
L'operatore del cast
(T) ha una precedenza maggiore rispetto all'operatore della moltiplicazione
*. Questo vuol dire che il double restituito da Math.random() (che ha valore 0.0 <= n < 1.0) viene convertito ad
int, diventando così sempre zero e poi dopo viene fatta la moltiplicazione con n. Risultato: sempre zero.
Soluzione:
array[i]=(int)
(Math.random() * n
);