Bei einer Unterrichtsaufgabe ergab sich für uns folgendes Problem:
Unser erstelltes Programm tut im Prinzip genau das, was es tun soll. Es verschlüsselt nach dem Caesar Verfahren alles,
was zwischen A-Z liegt und dies auch mit der gewünschten Verschiebung. Nur haben wir große Probleme,
beim Einfügen der Umlaute (äüö) sowie des ß.
Wir haben es bereits mit der ASCII versucht, allerdings stören uns die verbleibenden Sonderzeichen und restlichen Umlaute,
da wir auch rückübersetzen wollen und dass so dann natürlich nicht so recht funktioniert, da wir nicht umkopieren können.
Zudem finden wir es nicht ansehnlich und möchten es vermeiden, kamen aber leider nicht auf eine andere Lösung
und diverse Internetbeiträge halfen uns auch nicht wirklich weiter.
Hier ist nun unser Code (in Komplettfassung) :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 07.10.2015
* @author
*/
public class CaesarSatan extends JFrame {
// Anfang Attribute
private JTextField jTextField1 = new JTextField();
private JTextField jTextField2 = new JTextField();
private JButton jButton1 = new JButton();
private JNumberField jNumberField1 = new JNumberField();
private JButton jButton2 = new JButton();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
// Ende Attribute
public CaesarSatan(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 296;
int frameHeight = 300;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
jTextField1.setBounds(72, 48, 150, 20);
cp.add(jTextField1);
jTextField2.setBounds(72, 208, 150, 20);
cp.add(jTextField2);
jButton1.setBounds(24, 152, 99, 25);
jButton1.setText("Verschlüsseln");
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1_ActionPerformed(evt);
}
});
jButton1.setBackground(new Color(0xA3B8CC));
cp.add(jButton1);
jNumberField1.setBounds(104, 104, 83, 20);
jNumberField1.setText("");
cp.add(jNumberField1);
jButton2.setBounds(168, 152, 99, 25);
jButton2.setText("Entschlüsseln");
jButton2.setMargin(new Insets(2, 2, 2, 2));
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton2_ActionPerformed(evt);
}
});
jButton2.setBackground(new Color(0xA3B8CC));
cp.add(jButton2);
jLabel1.setBounds(8, 48, 62, 20);
jLabel1.setText("Botschaft:");
cp.add(jLabel1);
jLabel2.setBounds(8, 104, 86, 20);
jLabel2.setText("Verschiebung:");
cp.add(jLabel2);
jLabel3.setBounds(8, 208, 62, 20);
jLabel3.setText("Botschaft:");
jLabel3.setOpaque(false);
cp.add(jLabel3);
cp.setBackground(new Color(0xB8CFE5));
// Ende Komponenten
setVisible(true);
} // end of public CaesarSatan
// Anfang Methoden
public void jButton1_ActionPerformed(ActionEvent evt) {
String geheimtext = "";
String klartext= jTextField1.getText();
int verschiebung = jNumberField1.getInt();
char buchstabe;
int nummer;
klartext = klartext.toUpperCase();
for (int i=0; i < klartext.length(); i++)
{ buchstabe = klartext.charAt(i);
nummer = (int)buchstabe-(int)'A';
if (buchstabe >='A' && buchstabe <='Z'){
nummer = (nummer + verschiebung + 26) % 26;
}
geheimtext = geheimtext + (char)(nummer + (int)'A');
}
jTextField2.setText(geheimtext); // TODO hier Quelltext einfügen
} // end of jButton1_ActionPerformed
public void jButton2_ActionPerformed(ActionEvent evt) {
String geheimtext = "";
String klartext= jTextField1.getText();
int verschiebung = 26-jNumberField1.getInt();
char buchstabe;
int nummer; klartext = klartext.toUpperCase();
for (int i=0; i < klartext.length(); i++)
{ buchstabe = klartext.charAt(i);
nummer = (int)buchstabe-(int)'A';
if (buchstabe >='A' && buchstabe<='Z')
{ nummer = (nummer + verschiebung + 26) % 26; }
geheimtext = geheimtext + (char)(nummer + (int)'A');
}
jTextField2.setText(geheimtext);// TODO hier Quelltext einfügen
} // end of jButton2_ActionPerformed
// Ende Methoden
public static void main(String[] args) {
new CaesarSatan("CaesarSatan");
} // end of main
} // end of class CaesarSatan
****Wichtig sind in diesem Fall sicherlich nur die Dinge, die wir in die Buttons programmiert haben.
Wir würden uns sehr über hilfreiche Kommentare freuen, da es bei uns im Informatik Unterricht
eine eher weniger lehrreiche Phase gab und uns deshalb der letzte Schritt sehr schwer fällt.
Mit freundlichen Grüßen,
zwei verzweifelte Schülerinnen <3****