View Single Post
Old 10-09-2006, 20:38   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
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);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso