Java :: Aufgabe #34 :: Lösung #6
6 Lösungen
#34
Mit Caesar Chiffre ent- und verschlüsseln
Anfänger - Java
von Dome
- 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.
Konsolenausgabe:
Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu
#6
von kollar (340 Punkte)
- 10.12.2019 um 09:50 Uhr
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class CeasarChiffre {
public static void main(String args[]) {
FrCeasar frCeasar = new FrCeasar("Ceasar Ziffer");
}
}
class FrCeasar extends JFrame implements ActionListener {
JPanel pEingabe = new JPanel();
JLabel lbEingabe = new JLabel("Geben Sie den Text ein: ");
JTextField tfEingabe = new JTextField(20);
JPanel pZahl = new JPanel();
JLabel lbZahl = new JLabel("Geben Sie eine Zahl ein: ");
JTextField tfZahl = new JTextField(20);
JPanel pButton = new JPanel();
JButton bButton = new JButton("Verschlüsseln");
JPanel pAusgabe = new JPanel();
JLabel lbAusgabe = new JLabel("Ergebnis: ");
JTextField tfAusgabe = new JTextField(20);
FrCeasar(String titel) {
super(titel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(440, 300);
setLocation(1000, 300);
setLayout(new FlowLayout(FlowLayout.RIGHT, 20, 20));
tfAusgabe.setEditable(false);
pEingabe.add(lbEingabe);
pEingabe.add(tfEingabe);
pZahl.add(lbZahl);
pZahl.add(tfZahl);
pButton.add(bButton);
pAusgabe.add(lbAusgabe);
pAusgabe.add(tfAusgabe);
add(pEingabe);
add(pZahl);
add(pButton);
add(pAusgabe);
bButton.addActionListener(this);
tfEingabe.addActionListener(this);
tfZahl.addActionListener(this);
}
public void berechneCeasar(String stEingabetext, String stEingabeZahl) {
try {
int eingabeZahl = Integer.parseInt(stEingabeZahl);
char[] arrayABC = new char[26];
char[] arrayabc = new char[26];
StringBuilder sbAusgabe = new StringBuilder();
char tempZiffer;
char addZiffer;
for (int i = 0; i <= 25; i++) {
arrayABC[i] = (char) (i + 65);
arrayabc[i] = (char) (i + 97);
}
for (int i = 0; i < stEingabetext.length(); i++) {
tempZiffer = stEingabetext.charAt(i);
for (int j = 0; j < arrayABC.length; j++) {
if (arrayABC[j] == tempZiffer) {
if (eingabeZahl + j > 25) {
addZiffer = arrayABC[eingabeZahl + j - 26];
} else {
addZiffer = arrayABC[eingabeZahl + j];
}
sbAusgabe.append(addZiffer);
}
}
for (int j = 0; j < arrayabc.length; j++) {
if (arrayabc[j] == tempZiffer) {
if (eingabeZahl + j > 25) {
addZiffer = arrayabc[eingabeZahl + j - 26];
} else {
addZiffer = arrayabc[eingabeZahl + j];
}
sbAusgabe.append(addZiffer);
}
}
if (tempZiffer == ' ') {
sbAusgabe.append(' ');
}
}
tfAusgabe.setText(sbAusgabe.toString());
}
catch (NumberFormatException e) {
tfAusgabe.setText("Bitte Ganzzahl eingeben!");
}
}
@Override
public void actionPerformed(ActionEvent evt) {
berechneCeasar(tfEingabe.getText(), tfZahl.getText());
}
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
