Pessoal , através da Cifra de Cesar tenho que decodificar o código contido no vetor A utilizando o alfabeto do vetor B, deslocando 9 casas no vetor B.
public static void main(String[] args) {
char[] a = { 'U', 'N', '%', 'J', 'W', '#', 'N', 'I', '%','Ô','X','I','M','N','I','J','L','X','!','M','X','I','L','X','V','I','X',
'@','I','Y','U','J','W','X','@','I','À','@','I','E','Q','D','.','I','W','N','V','I','$','V','J','I','@','Ó','I','K',
'X','V','K','J','I','M','N','%','N','I','@','N','!','I','U','J','W','Ç','J','M','J','I','M','N','@','L','$','R','M',
'J','M','J','V','N','W','#','N','.' };
char[] b = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' ', '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','!','@','#','$','%',
'&','*','+','='};
int k = 9;
for(int i=0; i < a.length; i++){
for(int j=0; j < b.length; j++){
if ( a[i] == b[j]) {
if (j < 9){
j = 25; /* 25 é o total de letras do alfabeto -1 (por começar do 0 */
k = 9 - j;
}
System.out.print(b[j -k]);
}
}
}
}
A mensagem decifrada fica correta, porém os caracteres que tem acento não estão imprimindo, tal como na palavra VOÔ e nos demais caracteres que tem acento e Ç.
run:
LEVANTE VO DE ACORDO COM OS PLANOS S 6H5 NEM UMA S BOMBA DEVE SER LANADA DESCUIDADAMENTE BUILD SUCCESSFUL (total time: 0 seconds)
O correto seria:
LEVANTE VOÔ DE ACORDO COM OS PLANOS ÀS 6H5 NEM UMA SÓ BOMBA DEVE SER LANÇADA DESCUIDADAMENTE.
Poderiam auxiliar?