Ich habe einen Denkfehler bei der letzten Methode. Wie kann ich die zweite Methode überladen. Ergebnis soll sein die Benutzereingabe in CaesarsChiffre zu brechen und
das Ganze als String zu returnen.
Ausgabe: Geben Sie den verschluesselten Text ein:
Eingabe: Fdhvdu
Ausgabe: Rotation Text
0 Fdhvdu
1 Ecguct
2 Dbftbs
3 Caesar
4 Bzdrzq
…
25 Geiwev
das Ganze als String zu returnen.
Ausgabe: Geben Sie den verschluesselten Text ein:
Eingabe: Fdhvdu
Ausgabe: Rotation Text
0 Fdhvdu
1 Ecguct
2 Dbftbs
3 Caesar
4 Bzdrzq
…
25 Geiwev
Java:
public class CaesarsChiffre {
public static void main(String[] args) {
char benutzerBefehl;
String benutzerText;
int rotation=0;
System.out.println("Caesars Chiffre encode, decode, rotate.");
System.out.println("Waehlen Sie:");
System.out.println("V for encode");
System.out.println("E for decode");
System.out.println("B for rotation");
benutzerBefehl=Input.readChar();
switch (benutzerBefehl){
case 'V': System.out.println("Enter text to encode:");
benutzerText=Input.readString();
System.out.println("which rotation do you want?");
rotation=Input.readInt();
while (rotation < 1 || rotation > 25) {
System.out.println(" The key must be between 1 and 25, you entered: "+ benutzerBefehl);
break;
}
System.out.print("Encoded text: ");
System.out.println(Caesarencode(benutzerText,rotation));
break;
case 'E': System.out.println("Enter text to decode:");
benutzerText=Input.readString();
System.out.println("which rotation do you want?");
rotation=Input.readInt();
while (rotation < 1 || rotation > 25) {
System.out.println(" The key must be between 1 and 25, you entered: "+ benutzerBefehl);
break;
}
System.out.println("Decoded Text :");
System.out.println(Caesardecode(benutzerText,rotation));
break;
case 'B': System.out.println("Enter the rotated text:");
benutzerText=Input.readString();
System.out.println("Rotation Text: ");
System.out.println(Caesardecode(benutzerText));
default:
System.out.println("Invalid option..");
}
}
public static String Caesarencode(String original_text, int rot){
int length =original_text.length();
String cypherText="";
for(int i=0;i<length;i++){
char ch=original_text.charAt(i);
if(Character.isLetter(ch)){
if(Character.isLowerCase(ch)){
char c=(char)(ch+rot);
if(c>'z'){
cypherText += (char)(ch-(26-rot));
}
else{
cypherText+=c;
}
}
else if(Character.isUpperCase(ch)){
char c=(char)(ch+rot);
if(c>'Z'){
cypherText += (char)(ch-(26-rot));
}
else{
cypherText += c;
}
}
}
else{
cypherText+=ch;
}
}
return cypherText;
}
public static String Caesardecode(String original_text, int rot){
int length =original_text.length();
String cypherText="";
for(int i=0;i<length;i++){
char ch=original_text.charAt(i);
if(Character.isLetter(ch)){
if(Character.isLowerCase(ch)){
char c=(char)(ch-rot);
if(c<'a'){
cypherText += (char)(ch+(26-rot));
}
else{
cypherText+=c;
}
}
else if(Character.isUpperCase(ch)){
char c=(char)(ch-rot);
if(c<'A'){
cypherText += (char)(ch+(26-rot));
}
else{
cypherText += c;
}
}
}
else{
cypherText+=ch;
}
}
return cypherText.toString();
}
public static String[] Caesardecode(String secret_text){
String[] textNeu= new String[25];
for(int i=0;i<26;i++){
textNeu[i]= Caesardecode(secret_text, i);
}
return textNeu;
}
}