Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 22-jun-2008, 10:03   #1 (permalink)
Chemita ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2008
Mensajes: 11
Tonteria

Hola:

Estoy intentando cifrar un texto con un simple desplazamiento de las posiciones de los caracteres.

Para esto tengo un Vector con lo caracteres que se pueden usar, y un StringBuffer que almacena el resultado de ese desplazamiento.

Código PHP:
        StringBuffer sb = new StringBuffer();
        
Vector<Character= new Vector<Character>();
        for(
int i=0;i<256;i++){
            
v.add((char)i);
        }
        
char [] str.toCharArray();
        for(
int i=0;i<c.length;i++){
--->        
sb.append(v.get(v.indexOf((Character)c[i]+semilla)));
        } 
Bueno quisiera saber porque me lanza Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
Chemita está desconectado   Responder Citando
Antiguo 22-jun-2008, 11:36   #2 (permalink)
venkman llegará a ser famoso muy prontovenkman llegará a ser famoso muy pronto
 
Avatar de venkman
 
Fecha de Ingreso: enero-2008
Mensajes: 323
Enviar un mensaje por MSN a venkman
Respuesta: Tonteria

Tienes dos problemas: uno de paréntesis y otro de índices:

1. Lo que estás haciendo es buscar en v la posición de (c[i] +semilla), cuando lo que deberías hacer es buscar la posición de c[i] y luego desplazarlo semilla:
En lugar de v.indexOf((Character)c[i]+semilla)
Esto v.indexOf((Character)c[i])+semilla

2. Estás sumando semilla, pero realmente esto te va a llevar en ocasiones fuera del Vector. Tienes que hacer que cuando se pase vuelva al inicio.

El bucle quedaría así:
Código:
for(int i=0;i<c.length;i++){
    int posicion = v.indexOf((Character)c[i]); // Busca la posición inicial
    posicion += semilla; // Desplazamos semilla
    posicion = posicion%v.size; // aplicamos módulo del tamaño de v.
    sb.append(v.get(posicion));
}
venkman está desconectado   Responder Citando
Antiguo 22-jun-2008, 12:22   #3 (permalink)
Chemita ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2008
Mensajes: 11
Respuesta: Tonteria

Hola:

Muchas gracias por todo. Lo hice como me dijiste y funciona 100%.
Chemita está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:03.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93