Created
December 7, 2021 19:44
-
-
Save dannluciano/b478a4a62180af63ce84d73d5ff7bddc to your computer and use it in GitHub Desktop.
Cifra de Cesar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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