Autor
|
Tema: Problema con algoritmo encriptador y matriz (Leído 4,604 veces)
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Hola a todos, hoy estaba diseñando un algoritmo que cifra cadenas, cuando me dio un error extraño (puede que sea por mi autodidactia) que no soy capaz de resolver: public void cifra() { cadenaIntroducida.toUpperCase(); char[] matrizCaracteres = cadenaIntroducida.toCharArray(); int numeroCaracteres = matrizCaracteres.length; System. out. println("La cadena tiene " + numeroCaracteres +" caracteres." ); for(int i = 0; i < numeroCaracteres; i++){ matrizCaracteres[i] = matrizCaracteres[i+1]; } for(int x = 0; x < numeroCaracteres; x++){ System. out. println(matrizCaracteres [x ]); } }
La cosa, es que mi algoritmo hace lo siguiente, transforma todos los valores del array en el siguiente del indice, es decir, el valor que este en 0, sera transformado por el que este en 1, el de uno sera el 2, basicamente corre hacia un lado los indices. Me da un error raro al ejecutar: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at encriptacion.Encriptador.cifra(Encriptador.java:23) at encriptacion.Encriptador.main(Encriptador.java:32) La cadena tiene 5 caracteres. Java Result: 1
A que se debe? Saludos
|
|
|
En línea
|
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
si tu metodo es ese donde se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
si tu metodo es ese donde se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible. Saludos
|
|
|
En línea
|
|
|
|
Blitzkrieg'
Desconectado
Mensajes: 546
print('Hi there')
|
si tu metodo es ese donde se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible. Saludos Si, porque tu metodo es muy facil de descifrar
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
si tu metodo es ese donde se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible. Saludos Si, porque tu metodo es muy facil de descifrar La cosa esta en que no me preccupa que sea facil o no, si no como lo puedo hacer para encriptarlo (por ejemplo) se me ocurrió que podia dividir la string en dos y girarlas y volver a juntarlas. Pero sigue sin ser efectivo. Saludos
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Para la pregunta que haces, el error dá por esta línea: matrizCaracteres[i ] = matrizCaracteres[i+1];
Cuando i vale 4, está en la letra 'i' y le dices que en donde está la letra 'i' o sea matrizCaracteres[4], guarde la letra matrizCaracteres[i+1] es decir, matrizCaracteres[5] la cual no existe y por eso de lanza el error de desbordamiento del array.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Para la pregunta que haces, el error dá por esta línea: matrizCaracteres[i ] = matrizCaracteres[i+1];
Cuando i vale 4, está en la letra 'i' y le dices que en donde está la letra 'i' o sea matrizCaracteres[4], guarde la letra matrizCaracteres[i+1] es decir, matrizCaracteres[5] la cual no existe y por eso de lanza el error de desbordamiento del array.
la cosa es que no se me ocurre como estabilizar esa situacion, ya se que el error ocurre porque intento leer un indice que no existe, pero como se podria hacer para que lea solamente hasta el ultimo? Saludos
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Pues poniendole que lea sólamente hasta el último, si pones: for(int i = 0; i < numeroCaracteres-1; i++) Te queda ebcii, por ejemplo. Puedes hacer que el último sea el primero también, y así por lo menos tienes la cadena completa para posibles algoritmos reversibles, etc. Todo depende de lo que necesites.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
|
|