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
2090865

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.