Error cifrado ROOT13

Iniciado por Søra, 1 Agosto 2012, 15:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Søra

Buenas a todos, como indica el título estoy teniendo bastantes problemas a la hora de desarrollar un pequeño cifrador de texto en ROOT13, no son errores sintácticos ya que el compilador no em dice nada asi que supongo que son errores lógicos a ver si alguien me puede echar un cable.

Código (Java) [Seleccionar]

import java.util.Scanner;

public class ArraysFor {

public static void main(String[] args) {

char[] abecedario={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
System.out.println("Introduce el numero de caracteres a cifrar en ROOT13");
Scanner scann = new Scanner (System.in);
int maximo = scann.nextInt();
char letra[];
letra = new char[maximo];

for (int k=0; k<maximo; k++) {

letra[k] = scann.next().charAt(0);

}

for (int i=0; i<maximo; i++) {

for (int j=0; j<27; j++) {

if (letra[i] == abecedario[j]) {

int x=0;
x = j + 13;

    if (x>27) {
   
    x = x - 27;
   
    letra[i]=abecedario[x]; }
   
    else {
   
    letra[i]=abecedario[x]; }
   
                }
}
}

for (int g=0; g<maximo; g++){
System.out.println(letra[g]);
}
}

}


Bueno ese es el código lo que queria era cifrar los caracteres de manera que pasaran a ser los que se encuentran 13 posiciones mas a la derecha en el abecedario pero como se puede comprobar cuando ejecutamos el programa no todos los caracteres quedan bien cifdrados, lo raro es que para mi sorpresa hay algunos que si.

Un saludo y espero su ayuda.





Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

xmbeat


Código (java) [Seleccionar]
]import java.util.Scanner;

public class Prueba {

public static void main(String[] args) {

char[] abecedario={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
System.out.println("Introduce el numero de caracteres a cifrar en ROOT13");
Scanner scann = new Scanner (System.in);
int maximo = scann.nextInt();
char letra[];
letra = new char[maximo];

for (int k=0; k<maximo; k++) {

letra[k] = scann.next().charAt(0);

}

for (int i=0; i<maximo; i++) {

for (int j=0; j<27; j++) {

if (letra[i] == abecedario[j]) {
int x = j + 13;
   if (x>=27) {
    x = x - 27;
   letra[i]=abecedario[x]; }

   else {

   letra[i]=abecedario[x];
}
break;
               }
}
}

for (int g=0; g<maximo; g++){
System.out.println(letra[g]);
}
}

}