Hallo,
ich habe folgende Aufgabe zu lösen:
Der Text besteht aus Wortern mit genau einem Leerzeichen zwischen zwei Wörtern. Satzzeichen kommen nicht vor. Der zuruckgegebene String realisiert ein Buchstaben vertauschen nach obiger Motivation: Erster und letzter Buchstabe bleiben gleich, innere werden vertauscht. Wenn alle inneren Buchstaben verschieden sind, durfen vor und nach dem Vertauschen keine identischen Buchstaben an derselben Position stehen. Ausnahmen sind Worter mit drei Buchstaben. Weitere Anforderungen bezuglich des Vertauschens bestehen nicht.
Beispiel: Deis ist ein Staz den man totrz der gtrdehen Bbatsechun lseen knan
Dazu habe ich die unten folgende Methode geschrieben. Das Drehen der Wörter funktioniert auch, allerdings ist nach dem ersten Leerzeichen Schluss und mir wird im Prinzip nur das erste Wort gedreht. Vielleicht kann mir jemand weiterhelfen.
Vielen Dank
ich habe folgende Aufgabe zu lösen:
Der Text besteht aus Wortern mit genau einem Leerzeichen zwischen zwei Wörtern. Satzzeichen kommen nicht vor. Der zuruckgegebene String realisiert ein Buchstaben vertauschen nach obiger Motivation: Erster und letzter Buchstabe bleiben gleich, innere werden vertauscht. Wenn alle inneren Buchstaben verschieden sind, durfen vor und nach dem Vertauschen keine identischen Buchstaben an derselben Position stehen. Ausnahmen sind Worter mit drei Buchstaben. Weitere Anforderungen bezuglich des Vertauschens bestehen nicht.
Beispiel: Deis ist ein Staz den man totrz der gtrdehen Bbatsechun lseen knan
Dazu habe ich die unten folgende Methode geschrieben. Das Drehen der Wörter funktioniert auch, allerdings ist nach dem ersten Leerzeichen Schluss und mir wird im Prinzip nur das erste Wort gedreht. Vielleicht kann mir jemand weiterhelfen.
Vielen Dank
Java:
public class KreuzUndQuer {
/* Methode zerlegt die Einzelwoerter und packt sie in StringArray */
public static String[] printWords(String text) {
int anfang = 0;
int a = 0;
char[] textInChar = text.toCharArray();
int ende = textInChar.length;
int wortAnzahl = 0;
// zaehlt die Wortanzahl im String
for (int i = 0; i < textInChar.length; i++) {
if (textInChar[i] == ' ') {
wortAnzahl++;
}
}
// Array mit zaehler+1 Elementen erzeugen
String[] array = new String[wortAnzahl + 1];
// einzelnen Woerter in Array schreiben
for (int i = 0; i < textInChar.length; i++) {
if (textInChar[i] == ' ') {
array[a] = text.substring(anfang, i);
anfang = i + 1;
a++;
}
array[a] = text.substring(anfang, ende);
}
return array;
}
public static String ersterUndLetzterGleich(String text) {
// ruft das Array der Methode printWords auf
String[] array = KreuzUndQuer.printWords(text);
String[] result = new String[array.length];
;
// Schleife, die alle Wörter aus array bearbeitet
for (int k = 0; k < array.length; k++) {
// String substring = Wort aus dem array
String substring = array[k];
char erster = substring.charAt(0);
char letzter = substring.charAt(substring.length() - 1);
String mitte = substring.substring(1, substring.length() - 1);
char[] mitteCharArray = mitte.toCharArray();
char[] vertausche = new char[mitteCharArray.length];
for (int i = 0; i < mitteCharArray.length; i++) {
vertausche[i] = mitteCharArray[mitteCharArray.length - 1 - i];
}
char[] zwischenspeicher = new char[1];
for (int j = 0; j < vertausche.length; j++) {
for (int i = 0; i < vertausche.length; i++) {
if (vertausche[i] == mitteCharArray[i]) {
if (i != vertausche.length - 1) {
zwischenspeicher[0] = vertausche[i];
vertausche[i] = vertausche[i + 1];
vertausche[i + 1] = zwischenspeicher[0];
}
}
}
}
String vertauscht = new String(vertausche);
vertauscht = erster + vertauscht + letzter;
result[k] = vertauscht;
}
// erstes Element von Ergebnis muss
String satz = result[0];
// String wird zusammengesetzt
for (int i = 1; i < result.length; i++) {
satz = satz + " " + result[i];
}
return satz;
}
}