Java :: Aufgabe #34 :: Lösung #6

6 Lösungen Lösungen öffentlich
#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
vote_ok
von kollar (340 Punkte) - 10.12.2019 um 09:50 Uhr
Quellcode ausblenden Java-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben