Hallo,
ich sitze seit Tagen an einer Hausaufgabe und komme bei einem Schritt nicht weiter. Vielleicht kann mir ja hier jemand ein Denkanstoß geben. (Es gab hier schon ähnliche Fragen, allerdings habe ich noch nichts gefunden, was mein Problem lösen könnte.)
Aufgabe ist folgende:
Benutzer soll ein Wort/Satz über die Eingabe eingeben. Dieser Satz soll in einer zweidimensionalen Reihung wiedergegeben werden. Die Matrix für das Array bestimmt der Benutzer über Schlüssel 1 und Schlüssel zwei. So weit habe ich das hinbekommen.
Der Satz soll über Schlüssel1 (Zeilen) und Schlüssel2 (Spalten) in eine Matrix aufgeteilt werden.
Ich kriege den Satz nicht so angeordnet, wie auf dem Bild.
Hier meine Klasse:
und hier meine Testklasse:
Das ist meine Ausgabe:
ich sitze seit Tagen an einer Hausaufgabe und komme bei einem Schritt nicht weiter. Vielleicht kann mir ja hier jemand ein Denkanstoß geben. (Es gab hier schon ähnliche Fragen, allerdings habe ich noch nichts gefunden, was mein Problem lösen könnte.)
Aufgabe ist folgende:
Benutzer soll ein Wort/Satz über die Eingabe eingeben. Dieser Satz soll in einer zweidimensionalen Reihung wiedergegeben werden. Die Matrix für das Array bestimmt der Benutzer über Schlüssel 1 und Schlüssel zwei. So weit habe ich das hinbekommen.
Der Satz soll über Schlüssel1 (Zeilen) und Schlüssel2 (Spalten) in eine Matrix aufgeteilt werden.
Ich kriege den Satz nicht so angeordnet, wie auf dem Bild.
Hier meine Klasse:
Java:
public class Codierung {
private int zeilen;
private int spalten;
public Codierung(int pZeilen, int pSpalten) {
zeilen = pZeilen;
spalten = pSpalten;
}
private void codierteMatrixAusgeben(char[][] pCodierteMatrix) {
System.out.println("Die codierte Matrix:");
for (int i = 0; i < zeilen; i++)
{
for (int j = 0; j < spalten; j++)
{
System.out.print(pCodierteMatrix[i][j]);
}
}
}
private char[][] nachrichtInReihungSpeichern(String pNachricht) {
char[][] text = new char[zeilen][spalten];
int index = 0;
if (pNachricht.length() < (zeilen * spalten)) {
Random rnd = new Random();
for (int i = pNachricht.length(); i < (zeilen * spalten); i++) {
pNachricht += (char) (48 + rnd.nextInt(122-48));
}
}
for (int i = 0; i < zeilen; i++) {
for (int j = 0; j < spalten; j++) {
text[i][j] = pNachricht.charAt(index);
index++;
}
}
return text;
}
public String verschluessleText(String klarText) throws IllegalArgumentException{
if ((zeilen * spalten) < klarText.length())
throw new IllegalArgumentException("Zu viele Zeichen. Bitte die Zeichen reduzieren.");
char[][] text = nachrichtInReihungSpeichern(klarText);
codierteMatrixAusgeben(text);
String codierterText = verschluesseltenTextAuslesen(text);
return codierterText;
}
private String verschluesseltenTextAuslesen(char[][] pCodierteMatrix) {
String codierterText = "";
for (int i = 0; i < zeilen; i++)
{
for (int j = 0; j < spalten; j++)
{
codierterText += pCodierteMatrix[i][j];
}
}
return codierterText;
}
}
und hier meine Testklasse:
Java:
public class CodierungTest {
public static void main(String[] args) throws IOException{
String codierteNachricht;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("Geben Sie den zu verschlüsselnden Text ein:");
String nachricht = br.readLine();
System.out.println();
System.out.println("Schlüssel 1 (Zeilen) : ");
String zeilen = br.readLine();
int schluessel1 = Integer.parseInt(zeilen);
System.out.println();
System.out.println("Schlüssel 2 (Spalten): ");
String spalten = br.readLine();
int schluessel2 = Integer.parseInt(spalten);
System.out.println();
nachricht = nachricht.replaceAll(" ", "");
Codierung verschluesselung = new Codierung(schluessel1, schluessel2);
System.out.println(codierteNachricht = verschluesselung.verschluessleText(nachricht) + "\n");
System.out.println("Ihr eingegebener Text in verschlüsselter Form:");
System.out.println(codierteNachricht);
}
}
Das ist meine Ausgabe:
Code:
Geben Sie den zu verschlüsselnden Text ein:
Du hast zwei Versuche
Schlüssel 1 (Zeilen) :
5
Schlüssel 2 (Spalten):
5
Die codierte Matrix:
DuhastzweiVersuche0BHeYkZDuhastzweiVersuche0BHeYkZ
Ihr eingegebener Text in verschlüsselter Form:
DuhastzweiVersuche0BHeYkZ