Java - tipos basicos

 
Vista:

tipos basicos

Publicado por kaleb (20 intervenciones) el 06/08/2007 17:35:51
Hola Tengo el siguiente codigo, en el que necesito trabajar con flotantes y con enteros. Pero me da una excepcion por problemas con los tipos. Os pongo el codigo por si podeis ayudarme :

static float log_bin(float num, int base)
{
double n1, b1;
n1=Math.log((double)num);
b1=Math.log(base);
return (float)(n1/b1);
}

static float Calc_Entropy(ArrayList ac){

ArrayList p = new ArrayList<Float>(ac.size());
float p_aux;
int aux;
for(int i=0; i<ac.size(); i++)
p.add(0.0);

for(int j=0; j<ac.size(); j++) {
aux=((Integer)ac.get(j)).intValue();
p_aux=((Float)p.get(aux)).floatValue(); /EN ESTA LINEA DA PROBLEMAS
p.add(aux, p_aux+1);
}

int n =p.size();
float H_x=0, pi;
for(int i = 0; i<n; i++){
pi = ((Float)p.get(i)).floatValue();
H_x = H_x + pi* log_bin(pi,i);
}
return -H_x;
}

public static void main(String args[])
{
......

float hy;
hy=Calc_Entropy(ac1); //ac1 es un ArrayList inicializado con 0 y 1 tipo entero) En esta linea da problemas
System.out.println(hy);


}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:tipos basicos

Publicado por angel (537 intervenciones) el 07/08/2007 11:34:35
¿Que problema te da?
Has probdao a cambiar la inicilizacion de "int aux;"por "int aux=0" ??

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tipos basicos

Publicado por kaleb (20 intervenciones) el 07/08/2007 16:58:25
El error que me da no es al compilar sino al ejecutar, y dice :

Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Float

Y se refiere a las lineas que indicaba en el mensaje anterior. He probado lo que me has dicho de inicializar aux a 0 pero no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tipos basicos

Publicado por angel (537 intervenciones) el 08/08/2007 08:22:27
ahh,,,mira en esta linea,,," p.add(0.0); " estas añadiendo un double n lugar d un float, por eso luego te salta la excepcion.Cambialo por "p.add(0.0f); "

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tipos basicos

Publicado por kaleb (20 intervenciones) el 08/08/2007 15:42:21
Muchas gracias, era esto del 0.0f
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar