A ver kien sabe por ké ésto da siempre false

jasrat
28 de Agosto del 2005
No importa los parámetros que le pase, siempre dará false. :(
prob vale 100, en el momento que se inicia el método, y Calcula.numAleatorio(100) devuelve un entero aleatorio entre 1 y 100.

public boolean tieneFuegoRapido(double shooter, double target)
{ int tipoDisparando;
int tipoBlanco;
tipoDisparando= (int) Math.floor(shooter);
tipoBlanco=(int) Math.floor(target);
double valorMedio;
double aleatorio;
valorMedio=1;
if ((tipoBlanco==9)||(tipoBlanco==10))
{if (tipoDisparando==12) valorMedio=1250;
else valorMedio=5;};
if ((tipoDisparando==4)&&(tipoBlanco==13)) valorMedio=10;
if ((tipoDisparando==4)&&(tipoBlanco==3)) valorMedio=3;
if ((tipoDisparando==11)&&(tipoBlanco==14)) valorMedio=10;
if ((tipoDisparando==8)&&((tipoBlanco==13)||(tipoBlanco==14))) valorMedio=20;
if ((tipoDisparando==8)&&((tipoBlanco==15)||(tipoBlanco==17))) valorMedio=10;
if ((tipoDisparando==12)&&((tipoBlanco==0)||(tipoBlanco==1)||(tipoBlanco==6)||(tipoBlanco==7))) valorMedio=250;
if ((tipoDisparando==12)&&((tipoBlanco==3)||(tipoBlanco==13)||(tipoBlanco==14))) valorMedio=200;
if ((tipoDisparando==12)&&((tipoBlanco==4)||(tipoBlanco==15)||(tipoBlanco==17))) valorMedio=100;
if ((tipoDisparando==12)&&(tipoBlanco==16)) valorMedio=50;
if ((tipoDisparando==12)&&(tipoBlanco==5)) valorMedio=33;
if ((tipoDisparando==12)&&(tipoBlanco==6)) valorMedio=30;
if ((tipoDisparando==12)&&(tipoBlanco==8)) valorMedio=25;
if ((tipoDisparando==12)&&(tipoBlanco==11)) valorMedio=5;

prob=(prob/valorMedio)*(valorMedio-1);
aleatorio=Calcula.numAleatorio(100);
if (aleatorio>prob) return false;
else return true;

}

jasrat
28 de Agosto del 2005
A vore... si cambio estas lineas
tipoDisparando= (int) Math.floor(shooter);
tipoBlanco=(int) Math.floor(target);

por

tipoDisparando= "cualkier entero k me apetezca"
tipoBlanco="cualkier entero k me apetezca"

el método funcionará correctamente. La clave pues, debe estar en la conversión de tipos (improbable) o en la manera de pasar los valores. Alguna idea ?