¿En que falla mi codigo?
Publicado por mano13 (32 intervenciones) el 19/01/2017 13:10:33
Este es mi codigo en el que se simula un sistema de cifrado/descifrado del Cesar. Primero se le pide al usuario introducir una frase y luego se le pide si quiere cifrarla o descifrarla. Mi problema es que cuando quiero descifrar la frase me salta un error. Lo de cifrar lo hace bien. Gracias.
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
package ccesar;
import java.util.Scanner;
public class ccesar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int desplazamiento = 3;
String frase1, frase2, palabra, cifrar, descifrar;
frase2 = "";
String min = "abcdefghijklmnñopqrstuvwxyz";
String may = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
System.out.print("Inserte la frase: ");
frase1 = sc.nextLine();
System.out.println("¿Cifrar o descifrar?: ");
palabra = sc.nextLine();
//Comprobar si se ha introducido cifrar o descifrar
if(palabra.equals("cifrar") || palabra.equals("descifrar")){
//Inicio cifrar
if(palabra.equals("cifrar") || palabra.equals("Cifrar")){
for(int i = 0;i < frase1.length();i++){
for(int j = 0;j < min.length();j++){
if(frase1.charAt(i) == min.charAt(j)){
if(j + desplazamiento >= min.length()){
frase2 += min.charAt((j+desplazamiento)%min.length());
}else{
frase2 += min.charAt(j + desplazamiento);
}
}
else if(frase1.charAt(i) == may.charAt(j)){
if(frase1.charAt(i) == may.charAt(j)){
if(j + desplazamiento >= may.length()){
frase2 += may.charAt((j + desplazamiento)%may.length());
}else{
frase2 += may.charAt(j + desplazamiento);
}
}
}
}
}
}//Fin cifrar
//Inicio descifrar
if(palabra.equals("descifrar") || palabra.equals("Descifrar")){
for(int i = 0;i < frase1.length();i++){
for(int j = 0;j < min.length();j++){
if(frase1.charAt(i) == min.charAt(j)){
if(j - desplazamiento >= min.length()){
frase2 += min.charAt((j - desplazamiento)%min.length());
}else{
frase2 += min.charAt(j - desplazamiento);
}
}
else if(frase1.charAt(i) == may.charAt(j)){
if(frase1.charAt(i) == may.charAt(j)){
if(j - desplazamiento >= may.length()){
frase2 += may.charAt((j - desplazamiento)%may.length());
}else{
frase2 += may.charAt(j - desplazamiento);
}
}
}
}
}
}//Fin descifrar
}else{ //Si se produce un error al introducir "cifrar" o "descifrar"
System.out.println("Palabra mal introducida. Introduzca cifrar o descifrar");
}
System.out.println("Frase introducida: " +frase1);
System.out.println("Frase traducida: " +frase2);
}
}
Valora esta pregunta


0