Ciao,
Ho un problema con la funzione nextInt() della classe Random.
Ho la necessità di generare due valori, x e y, tali che la radice della somma dei loro quadrati sia uguale all'intero il cui valore è a metà fra due interi r1 ed r2.
for(isGood = 0, x = 0, y = 0; isGood != (r1 + r2) / 2{
x = nr.nextInt(r1) + 1;
y = nr.nextInt(r1) + 1;
isGood = (int)Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
}
Il problema è che una volta su dieci (troppo) mi scatta questa eccezione:
Exception in thread "main" java.lang.IllegalArgumentException: n must be positive at java.util.Random.nextInt(Random.java:248)
at Swing.Prova.calcola(Prova.java:154)
at Swing.Main.main(Main.java:46)
Le linee incriminate sono, indistintamente le due che invocano nextInt().
Ho guardato tra l'altro nextInt():
public int nextInt(int n) {
if (n<=0)
throw new IllegalArgumentException("n must be positive");
In pratica scatta l'eccezione come se l'upper bound del numero da generare fosse negativo, ma r1 ed r2 sono entrambi positivi ed non modificabili, nn a caso funziona quasi sempre.
Tuttavia ogni tanto salta.
Grassie a tutti coloro che mi illuminano.