Character in Wörtern vertauschen

Keule407

Mitglied
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

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;

	}
}
 

Fant

Bekanntes Mitglied
Poste doch mal eine Testklasse bzw Methode.

Bei meinem Test lief alles, wie von mir erwartet. Etwas unschön finde ich aber, dass das Vertauschen stets noch dem gleichen Muster erfolgt. Gleiche Worte sind nach dem durcheinanderwürfeln also auch immer gleich. Da könnte man vielleicht mit ein paar Zufallswerten o.Ä. rumspielen.

Eine kleine Anmerkung aber schon mal: Für so eine Zerlegung deines Strings in Teilstrings eignet sich bestens der StringTokenizer (StringTokenizer (Java 2 Platform SE v1.4.2))

Gruß Fant

Code:
Input:   Dies ist ein Satz den man trotz gedrehten Buchstaben lesen kann
Output:  Deis ist ein Staz den man ttroz gtehreden Bebatshcun lseen knan
 
Zuletzt bearbeitet:

Keule407

Mitglied
kann natürlich auch sein dass ich hier was falsch gemacht habe
Java:
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("Texteingabe: ");
		String text = scanner.next();
		
		System.out.println("Textausgabe: " + KreuzUndQuer.ersterUndLetzterGleich(text));
		scanner.close();
	}
 

Keule407

Mitglied
Ja :D, schönen Dank schon mal. allerdings habe ich jetzt noch das Problem dass meine whiteSpaces bei der Ausgabe weg sind. Einfach nen " " in der Ausgabe finde ich nen bisschen fruchtlos. kann ich dass noch irgendwie in meine Methode implementieren?
 

Fant

Bekanntes Mitglied
Die Leerzeichen verschwinden nicht einfach (siehe mein Testfall). Du schreibst sie vermutlich also gar nicht in den String rein. Zeig mal deine main-Methode her.

Gruß Fant
 

Keule407

Mitglied
Java:
public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()) {
			String text = scanner.next();
			System.out.print(KreuzUndQuer.ersterUndLetzterGleich(text));
		}
		
		scanner.close();
	}
 

julian.veh

Bekanntes Mitglied
Java:
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Texteingabe: ");
        String text = scanner.nextLine();      
        System.out.println("Textausgabe: " + KreuzUndQuer.ersterUndLetzterGleich(text));
        scanner.close();
    }

Oder so
Java:
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            String text = scanner.next();
            System.out.print(KreuzUndQuer.ersterUndLetzterGleich(text) + " ");
        }
        
        scanner.close();
    }

Also du fügst dem String ein Leerzeichen zu
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
B Klasse "Character" Java Basics - Anfänger-Themen 2
O String mit Character vergleichen Java Basics - Anfänger-Themen 3
M Warum werden character, die Leerzeichen sind, nicht korrekt verarbeitet? Java Basics - Anfänger-Themen 2
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
X Gänsefüßchen als invalid character constant Java Basics - Anfänger-Themen 2
K Regex: illegal character range Java Basics - Anfänger-Themen 4
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
J Character.getNumericValue Java Basics - Anfänger-Themen 2
G Error: "No character data is allowed" Java Basics - Anfänger-Themen 6
A Character einlesen Java Basics - Anfänger-Themen 2
A character einlesen Java Basics - Anfänger-Themen 4
S char Array in Character KlassenArray? Java Basics - Anfänger-Themen 24
H was ist radix in Character.digit(char, int radix) Java Basics - Anfänger-Themen 4
B Datentypen Character überprüfen Java Basics - Anfänger-Themen 3
G Character-orientierte File-Streams mit der Klasse FileReader Java Basics - Anfänger-Themen 5
A Character-Array sortieren￾￾ Java Basics - Anfänger-Themen 8
G Character Encoding Java Basics - Anfänger-Themen 3
T Special Character darstellung Java Basics - Anfänger-Themen 4
halla Character-Array in einen String umwandeln Java Basics - Anfänger-Themen 3
C Character to String! Java Basics - Anfänger-Themen 6
M Illegal Escape Character und keine Darstellung? Java Basics - Anfänger-Themen 7
S Character aus Textfeld auslesen Java Basics - Anfänger-Themen 2
S Umwandlung eines Character-Streams in ein Image Java Basics - Anfänger-Themen 17
N String to Character Array... Java Basics - Anfänger-Themen 5
J Space zwischen 2 Character verkleinern Java Basics - Anfänger-Themen 5
M Häufigkeit von Wörtern zählen Java Basics - Anfänger-Themen 6
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
L Array mit Wörtern gestalten Java Basics - Anfänger-Themen 2
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
S Vokale am Ende von Wörtern löschen Java Basics - Anfänger-Themen 7
T Erste Schritte Ende von Wörtern in einer Zeile feststellen? Java Basics - Anfänger-Themen 5
K Sortierung von Anzahl der Wörtern in ArrayList Java Basics - Anfänger-Themen 4
L Textzeilen nach 2 Wörtern untersuchen wenn vorhanden Zeile in neuen Text ausgeben wenn nicht löschen Java Basics - Anfänger-Themen 10
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
N Importieren von Wörtern aus Datei als Array von Strings Java Basics - Anfänger-Themen 2
C sortieren von Wörtern Java Basics - Anfänger-Themen 19
M länge von wörtern betimmen Java Basics - Anfänger-Themen 20
S Suchen von Wörtern in einem Text Java Basics - Anfänger-Themen 11
I Y und Z vertauschen Java Basics - Anfänger-Themen 4
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
G Linked list, Methode zum Vertauschen von Elementen Java Basics - Anfänger-Themen 14
J Inhalte von zwei Arrays vertauschen?! Java Basics - Anfänger-Themen 6
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
H Array vertauschen von 2 Elementen Java Basics - Anfänger-Themen 3
S Array Werte vertauschen Java Basics - Anfänger-Themen 2
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
B Arrays in Reihenfolge vertauschen Java Basics - Anfänger-Themen 6
K Datentypen Werte im Array vertauschen Java Basics - Anfänger-Themen 11
L Methoden Methode Parameter vertauschen? Java Basics - Anfänger-Themen 3
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
G . und , vertauschen Java Basics - Anfänger-Themen 3
X Methoden Vertauschen von 2 Werten eines Arrays Java Basics - Anfänger-Themen 13
P zwei werte vertauschen Java Basics - Anfänger-Themen 9
C Zeichen vertauschen Java Basics - Anfänger-Themen 35
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
F Datentypen Zufällige Buchstaben vertauschen Java Basics - Anfänger-Themen 3
S String Elemente bzw. Buchstaben miteinander vertauschen? Java Basics - Anfänger-Themen 6
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
G Objekte in ArrayList vertauschen :( Java Basics - Anfänger-Themen 13
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
L HashMap Key<->Value vertauschen Java Basics - Anfänger-Themen 5
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
N Groß- und Kleinschreibung vertauschen? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben