Caesar-Chiffre < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:19 Mo 14.11.2011 | Autor: | emulb |
Aufgabe | Implementieren Sie ein Programm, das den Benutzer zunächst danach fragt, ob er einen Text ver- oder entschlüsseln möchte. Danach fragt das Programm den Benutzer nach dem geheimen Schlüssel und dem Text, der ver- oder entschlüsselt werden soll. Zum Schluss führt es die ausgewählte Operation (ver- oder entschlüsseln) durch und gibt das Ergebnis aus. |
import java.util.*;
public class Caesar
{
public static void main (String [] args)
{
String original="",geheimText = "";
int schluessel=0, num=0, key=0;
Scanner scanner=new Scanner(System.in);
System.out.print("Bitte zu Geheimtext verschlüsselt eingeben: ");
original=scanner.nextLine();
System.out.print("Bitte Schluessel eigeben: ");
String sting=scanner.nextLine();
char keychar = sting.charAt (0);
char keyc = keychar.toUpperCase();
key=(int)keyc-65;
original = original.toUpperCase();
System.out.println("Soll ver- oder entschlüsselt werden? (0=ver; 1=ent");
schluessel=scanner.nextInt();
if (schluessel <=0){
for (int i=0; i<original.length(); i++){
num = original.charAt(i);
if (num == ' ');
else{
num+=key;
if (num>90) num-=26;
geheimText += (char)num;
}
}
}
else{
for(int i=0; i<original.length(); i++){
num = original.charAt(i);
if(num == ' ');
else{
num-=key;
if (num<65) num+=26;
geheimText += (char)num;
}
}
}
System.out.println(geheimText);
}
}
Jedoch Fehlermeldung: Caesar.java:15: char cannot be dereferenced
char keyc = keychar.toUpperCase();
Wo ist mein Fehler???
|
|
|
|
Hallo emulb,
> Implementieren Sie ein Programm, das den Benutzer zunächst
> danach fragt, ob er einen Text ver- oder entschlüsseln
> möchte. Danach fragt das Programm den Benutzer nach dem
> geheimen Schlüssel und dem Text, der ver- oder
> entschlüsselt werden soll. Zum Schluss führt es die
> ausgewählte Operation (ver- oder entschlüsseln) durch und
> gibt das Ergebnis aus.
> import java.util.*;
> public class Caesar
> {
>
> public static void main (String [] args)
> {
> String original="",geheimText = "";
> int schluessel=0, num=0, key=0;
> Scanner scanner=new Scanner(System.in);
> System.out.print("Bitte zu Geheimtext verschlüsselt
> eingeben: ");
> original=scanner.nextLine();
> System.out.print("Bitte Schluessel eigeben: ");
> String sting=scanner.nextLine();
> char keychar = sting.charAt (0);
> char keyc = keychar.toUpperCase();
> key=(int)keyc-65;
>
> original = original.toUpperCase();
> System.out.println("Soll ver- oder entschlüsselt
> werden? (0=ver; 1=ent");
> schluessel=scanner.nextInt();
>
> if (schluessel <=0){
> for (int i=0; i<original.length(); i++){
>
> num = original.charAt(i);
> if (num == ' ');
> else{
> num+=key;
> if (num>90) num-=26;
> geheimText += (char)num;
> }
> }
> }
> else{
> for(int i=0; i<original.length(); i++){
> num = original.charAt(i);
> if(num == ' ');
> else{
> num-=key;
> if (num<65) num+=26;
> geheimText += (char)num;
>
> }
> }
> }
> System.out.println(geheimText);
> }
> }
>
> Jedoch Fehlermeldung: Caesar.java:15: char cannot be
> dereferenced
> char keyc = keychar.toUpperCase();
>
> Wo ist mein Fehler???
Die Methode toUpperCase der Character-Klasse ist eine statische Methode.
Der Aufruf erfolgt dann so:
[mm]char \ keyc = \blue{Character}.toUpperCase(\blue{keychar}); [/mm]
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:16 Mo 14.11.2011 | Autor: | emulb |
Ok, danke jetzt läuft das Programm.
Jedoch hab ich anscheinend wieder ein Fehler irgendwo, weil es falsch übersetzt. Außerdem sind nimmt er Sonderzeichen und Zahlen dazu.
z.B ich gebe Geheim ein mit dem Schlüssel 2
dann bekomm ich beim verschlüsseln: 8696:>
?? Wo hab ich mein Fehler drin?
|
|
|
|
|
Hallo emulb,
> Ok, danke jetzt läuft das Programm.
>
> Jedoch hab ich anscheinend wieder ein Fehler irgendwo, weil
> es falsch übersetzt. Außerdem sind nimmt er Sonderzeichen
> und Zahlen dazu.
>
> z.B ich gebe Geheim ein mit dem Schlüssel 2
> dann bekomm ich beim verschlüsseln: 8696:>
>
> ?? Wo hab ich mein Fehler drin?
Statt key=(int)keyc-65;
muss es heißen: key=(int) keychar -(int) '0';
Außerdem ist die Eingabe nur in Großbuchtstaben erlaubt.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 08:37 Di 15.11.2011 | Autor: | emulb |
Es sind trotzdem Sonderzeichen dabei :(
|
|
|
|
|
Hallo emulb,
> Es sind trotzdem Sonderzeichen dabei :(
Dann musst Du das auch in Deinem Programm berücksichtigen.
Das Programm geht bisher nämlich nur von
einem Zeichenvorrat von 'A' bis 'Z' aus.
Gruss
MathePower
|
|
|
|