Skip to content

Instantly share code, notes, and snippets.

@dannluciano
Created December 7, 2021 19:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dannluciano/b478a4a62180af63ce84d73d5ff7bddc to your computer and use it in GitHub Desktop.
Save dannluciano/b478a4a62180af63ce84d73d5ff7bddc to your computer and use it in GitHub Desktop.
Cifra de Cesar
import java.util.Scanner;
public class Cesar {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
char[] mapa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
int chave = 26;
while (chave < 0 || chave > 25) {
System.out.println("César - Digite uma chave:");
chave = teclado.nextInt();
teclado.nextLine();
if (chave < 0 || chave > 25) {
System.out.println("Error! Chave Invalida!");
}
}
while (true) {
int opcao = -1;
while (opcao < 0) {
System.out.println("+---------------------+");
System.out.println("| Chave Atual: " + chave);
System.out.println("+---------------------+");
System.out.println("| 1 - Criptografar |");
System.out.println("| 2 - Descriptografar |");
System.out.println("| 3 - Trocar de Chave |");
System.out.println("| 0 - Sair |");
System.out.println("+---------------------+");
System.out.println("| Digite uma Opção: |");
System.out.println("+---------------------+");
opcao = teclado.nextInt();
teclado.nextLine();
}
switch (opcao) {
case 0:
System.out.println("Bye, Bye!");
System.exit(0);
break;
case 1:
System.out.println("César - Digite uma mensagem pura:");
String mensagemOriginal = teclado.nextLine().toUpperCase();
String mensagemProcessada = "";
for (int i = 0; i < mensagemOriginal.length(); i++) {
char letra = mensagemOriginal.charAt(i);
boolean eUmCaractere = false;
int indice = 0;
while (indice < mapa.length) {
if (letra == mapa[indice]) {
eUmCaractere = true;
break;
}
indice++;
}
if (eUmCaractere) {
int indiceChave = (indice + chave) % mapa.length;
mensagemProcessada += mapa[indiceChave];
} else {
mensagemProcessada += letra;
}
}
System.out.println("-".repeat(40));
System.out.println(mensagemProcessada);
break;
case 2:
System.out.println("César - Digite uma mensagem cifrada:");
String mensagemCifrada = teclado.nextLine().toUpperCase();
String mensagemPura = "";
for (int i = 0; i < mensagemCifrada.length(); i++) {
char letra = mensagemCifrada.charAt(i);
boolean eUmCaractere = false;
int indice = 0;
while (indice < mapa.length) {
if (letra == mapa[indice]) {
eUmCaractere = true;
break;
}
indice++;
}
if (eUmCaractere) {
int indiceChave = (indice - chave);
if (indiceChave < 0) {
indiceChave += 26;
}
indiceChave = indiceChave % mapa.length;
mensagemPura += mapa[indiceChave];
} else {
mensagemPura += letra;
}
}
System.out.println("-".repeat(40));
System.out.println(mensagemPura);
break;
case 3:
while (chave < 0 || chave > 25) {
System.out.println("César - Digite uma chave:");
chave = teclado.nextInt();
teclado.nextLine();
if (chave < 0 || chave > 25) {
System.out.println("Error! Chave Invalida!");
}
}
break;
default:
System.out.println("Opção Invalida!");
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment