Hallo Leute!
Zum üben habe ich ein Programm geschrieben dass einen eingegebenen Text mit der
Caesar-Verschlüsselung chiffriert. Der Code für die Chiffrierung funktioniert auch, allerdings
habe ich seltsamerweise ein anderes Problem. Zunächst mein Code
Zuerst frage ich also ob ein Text En- oder Decrypted werden soll. Soweit so gut.
Jetzt fängt aber das Problem an. Sobald ich mit dem ersten Input "E" in die If-Abfrage
springe erhalte Ich folgenden Ouput:
Das heisst, mein erster Input wird einfach übersprungen und er fragt direkt nach der zeichenverschiebung.
(Das habe ich schon getestet. Ein Integer wird verlangt wenn ich Versuche einen String einzugeben.)
Wenn Ich nun den oben auskommentierten Teil 'Test Input' wieder in den Code aufnehme bekomme ich
folgenden Input:
Das heisst ich bekomme den test Output, der test Input wird übersprungen und er springt diesmal
direkt zu meinem gewollten Input und alles funktioniert wie es soll. Kann sich irgendjemand erklären warum?
Die SavitchIn Klasse ist eine Klasse die uns mein Dozent zur Verfügung gestellt hat und ist
äquivalent zu jeder anderen Input Methode. Hier geht es lediglich um den Komfort und der Fehler
liegt sicherlich nicht hier.
lg, Reb00t
Zum üben habe ich ein Programm geschrieben dass einen eingegebenen Text mit der
Caesar-Verschlüsselung chiffriert. Der Code für die Chiffrierung funktioniert auch, allerdings
habe ich seltsamerweise ein anderes Problem. Zunächst mein Code
Java:
import java.util.Arrays;
public class CaesarChiffre {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("En- oder Decrypten? (E/D)");
char c = SavitchIn.readChar();
/* TESTINPUT
System.out.println("test");
String test = SavitchIn.readLine();
*/
if(c == 'E') {
String text;
String textEn;
int n;
System.out.println("Welcher Text soll Encrypted werden?");
text = SavitchIn.readLine();
System.out.println("Um wieviel Zeichen soll verschoben werden?");
n = SavitchIn.readLineInt();
int[] classRing = new int[26];
textEn = "";
for(int i = 0; i < classRing.length; i++){
classRing[i] = (char)(i+97);
}
for(int i = 0; i < text.length(); i++){
int index = Arrays.binarySearch(classRing, text.charAt(i));
textEn = textEn.concat(String.valueOf((char)(classRing[(index+n) % 26])));
}
System.out.println("Encrypteter Text: " + textEn);
} else if(c == 'D') {
} else {
System.out.println("Error!");
}
}
}
Zuerst frage ich also ob ein Text En- oder Decrypted werden soll. Soweit so gut.
Jetzt fängt aber das Problem an. Sobald ich mit dem ersten Input "E" in die If-Abfrage
springe erhalte Ich folgenden Ouput:
Code:
En- oder Decrypten? (E/D)
E
Welcher Text soll Encrypted werden?
Um wieviel Zeichen soll verschoben werden?
Das heisst, mein erster Input wird einfach übersprungen und er fragt direkt nach der zeichenverschiebung.
(Das habe ich schon getestet. Ein Integer wird verlangt wenn ich Versuche einen String einzugeben.)
Wenn Ich nun den oben auskommentierten Teil 'Test Input' wieder in den Code aufnehme bekomme ich
folgenden Input:
Code:
En- oder Decrypten? (E/D)
E
test
Welcher Text soll Encrypted werden?
Das heisst ich bekomme den test Output, der test Input wird übersprungen und er springt diesmal
direkt zu meinem gewollten Input und alles funktioniert wie es soll. Kann sich irgendjemand erklären warum?
Die SavitchIn Klasse ist eine Klasse die uns mein Dozent zur Verfügung gestellt hat und ist
äquivalent zu jeder anderen Input Methode. Hier geht es lediglich um den Komfort und der Fehler
liegt sicherlich nicht hier.
lg, Reb00t