Donde esta el fallo ?por favor...ayuda

nani
23 de Enero del 2004
es un metodo bastante sencillo que recibe un entero y rota los digitos una vez a izquierdas es decir si recibe el 1234 devuelve el 2341.
compila bien toda la clase pero al ejecutar me da Error Array Fuera de Rango (java.lang.ArrayIndexOutOfBoundsException:0) y no entiendo por que...tambien deciros que el tamaño del array es "num",es decir desde 0 hasta num -1 y el fallo me lo detecta en el primer FOR...graciass por adelantado

public static long rotIzq (long n)

{int i;long a=n;
for(int exp=num-1;exp>=0;exp--)
{dig[num-exp-1]=(int)n/(10^exp);
a-=dig[num-exp-1]*(10^exp);};
int g=dig[0];
for(i=1;i<=num;i++)
{dig[i]=dig[i+1];}
dig[num-1]=g;
int p=1;
for(i=0;i<num;i++)
{b+=p*dig[i];
p*=10;};
return b;}

Monica
23 de Enero del 2004
A ver... mmm... ¿Estás segura de que el fallo te lo da en el primer for? Si te he entendido bien, el tamaño del array es num, ¿no? Pues lo que haces es:

for(i=1;i<=num;i++)
YO VEO EL PROBLEMA AQUÍ, CUANDO i=num TE PASA QUE:
{dig[i]=dig[i+1];}
DIG[NUM]=DIG[NUM+1] Y ESTO NO PUEDE SER
CAMBIA EL FOR POR ESTO:
for(i=1;i<num;i++)
dig[num-1]=g;
int p=1;
for(i=0;i<num;i++)
{b+=p*dig[i];
p*=10;};
return b;}


MUCHA SUERTE!

Monica
23 de Enero del 2004
no se si ha quedado muy bien explicado....
Lo que te indico, es que cambies el rango del segundo for
for(i=1;i<=num;i++)
por este otro:
for(i=1;i<num;i++)

Mucha suerte