Stavo provando a creare un programma per riprodurre il cifrario di cesare, in input prende la stringa e la chiave, in output restituisce la stringa cifrata. Mi stavo chiedendo se esistesse una maniera più semplice di fare il programma di come l'ho fatto io.
import java.util.Scanner;
public class CifrarioDiCesare {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("INPUT: ");
String frase = in.nextLine();
System.out.print("Chiave: ");
int chiave = in.nextInt();
frase = cifra(frase, chiave);
System.out.print("OUTPUT: " + frase);
}
public static String cifra(String frase, int chiave) {
char[] arrayChar = frase.toCharArray();
for (int i=0; i<arrayChar.length; i++) {
for (int j=0; j<chiave; j++) {
if (arrayChar[i]=='A') {
arrayChar[i]='B';
}
else if (arrayChar[i]=='B') {
arrayChar[i]='C';
}
else if (arrayChar[i]=='C') {
arrayChar[i]='D';
}
else if (arrayChar[i]=='D') {
arrayChar[i]='E';
}
else if (arrayChar[i]=='E') {
arrayChar[i]='F';
}
else if (arrayChar[i]=='F') {
arrayChar[i]='G';
}
else if (arrayChar[i]=='G') {
arrayChar[i]='H';
}
else if (arrayChar[i]=='H') {
arrayChar[i]='I';
}
else if (arrayChar[i]=='I') {
arrayChar[i]='L';
}
else if (arrayChar[i]=='L') {
arrayChar[i]='M';
}
else if (arrayChar[i]=='M') {
arrayChar[i]='N';
}
else if (arrayChar[i]=='N') {
arrayChar[i]='O';
}
else if (arrayChar[i]=='O') {
arrayChar[i]='P';
}
else if (arrayChar[i]=='P') {
arrayChar[i]='Q';
}
else if (arrayChar[i]=='Q') {
arrayChar[i]='R';
}
else if (arrayChar[i]=='R') {
arrayChar[i]='S';
}
else if (arrayChar[i]=='S') {
arrayChar[i]='T';
}
else if (arrayChar[i]=='T') {
arrayChar[i]='U';
}
else if (arrayChar[i]=='U') {
arrayChar[i]='V';
}
else if (arrayChar[i]=='V') {
arrayChar[i]='Z';
}
else if (arrayChar[i]=='Z') {
arrayChar[i]='A';
}
}
}
frase = new String(arrayChar);
return frase;
}
}