Array umdrehen

Zel2491

Aktives Mitglied
Moin moin 😉

Ich komm bei einem Algorithmus gerade nicht so richtig weiter...

ich wollte mal meine Fähigkeiten testen und habe mir ein (dachte ich) simples "Problem" ausgesucht:

ich habe eine Funktion mit einem Array
Java:
void namenUmdrehen(){
String[] namensArray = new String[5];
namensArray[0] = "Lieschen Mueller";
namensArray[1] = "Peter Fleissig";
namensArray[2] = "Achim Mustermann";
namensArray[3] = "Anne Mayer";
namensArray[4] = "Peter Pan";

//...

}

, welches ich "umdrehen" möchte. Im Grunde soll am Ende, wenn ich das auf der Konsole ausgebe nicht "Lieschen Mueller" stehen, sondern: "Mueller, Lieschen".

Muss ich jedes einzelne Zeichen überprüfen und wenn eine Leerzeile kommt vertausche ich das? Ich dachte erst, das wird ganz einfach, aber ich stehe im Moment auf'm Schlauch...^^

Jemand eine Idee...? ;-)

Gruß Zel ;-)
 
Muss ich jedes einzelne Zeichen überprüfen und wenn eine Leerzeile kommt vertausche ich das?
was vertauschen?
Trenne doch den jeweiligen String in einzelne Wörter (entweder manuell, oder mit String#split) und setze die so wieder zusammen, wie du es haben möchtest.

P.S. Du hast etwas ungünstig das Thema gewählt, denn genau genommen hat das mit Array rein gar nichts zu tun um vor allem willst du nicht das Array an sich umdrehen.
 
Stimmt...fällt mir jetzt erst auf... statt Array hätte es String besser getroffen... -.-''

Vielen Dank für deine Hilfe, ich teste es gleich mal aus 😉

Gruß Zel 😉
 
Die Wörter des Strings sind Array Elemente gesplittet an Whitespaces. Du könntest also den String tatsächlich splitten. Im Collections-Framework gibt es die Methode:
Java:
Collections.swap
Die könntest Du benutzen, indem Du den Array in eine List steckst. Aber Du willst es ja selber machen. Dann schau Dir mal den Code dieser Methode an, versuche, ihn nachzuvollziehen und Schau, was davon für Dein Problem passt. Ich denke das hat auch einen großen Lerneffekt/Spaßfaktor.
 
Vorsicht, das Erkennen von Namensteilen und dem, was Vorname und Nachname ist, ist alles andere als trivial.

Wenn sicher ist, dass da immer Nur Exakt zwei Worte stehen, deren erstes der Vorname und deren zweites der Nachname ist, ist die Sache einfach. Wenn du aber mit wirklich Namen zu tun hast, wird die Sache ziemlich komplex. Die Freiherren und der Prof. Dr. Dr. hc. blubb. von Sowieso machen sie Sache gern immer wieder haarsträubend schwierig.

Man kann mit Listen bekannter Vor- und Nachnamen arbeiten. Aber auch das hilft immer nur ein Stück weit. Schonmal ein paar asiatische Namen mit in einer Namensliste gehabt?
 
Wieso nicht einfach?

Java:
public class StringDrehen {

	void namenUmdrehen(){
		String[] namensArray = new String[5];
		namensArray[0] = "Lieschen Mueller";
		namensArray[1] = "Peter Fleissig";
		namensArray[2] = "Achim Mustermann";
		namensArray[3] = "Anne Mayer";
		namensArray[4] = "Peter Pan";

		for(int i=0; i<namensArray.length; i++) {
			System.out.println("Alt    : " + namensArray[i]);
			int spacePos = namensArray[i].indexOf(' ');
			String part1 = namensArray[i].substring(0, spacePos);
			String part2 = namensArray[i].substring(spacePos+1);
			System.out.println("Teil 1 : " + part1);
			System.out.println("Teil 2 : " + part2);
			String neu = part2 + ", " + part1;
			System.out.println("Neu    : " + neu);
		}
	}

	public static void main(String[] args) {
		(new StringDrehen()).namenUmdrehen();
	}
}

Logisch lässt sich das Innere der Schleife auf einen Einzeiler reduzieren, aber so wird dem TO, welcher offensichtlich ja Anfänger ist, genau gezeigt was passiert.

Logisch lässt sich der Split per
Code:
String.split(...)
machen

Logisch deckt das nicht alle Möglichkeiten ab, aber es erfüllt haarklein die Anforderung welche aus dem Eingangsthread hervorgeht ;-) -> KISS oder besser KIASAP 🙂 (keep it as simple as possible)

Ja, ich weiss, dass es hier Leute gibt, die diese Version komplizierter als einen "banalen" rexexp finden :lol:
 
sorry Andi_CH, aber das ist nicht wirklich richtig.

KISS bedeutet nicht dass man jeden einzelnen Schritt schreibt und nur "Grundfunktionaltiaeten" nutzt. Ein guter Einzeiler ist meist besser als 10 Zeilen und es erklaert selbst einem Anfaenger was passiert
 
@Crian: Ansonsten gabs immer Gemecker, wir sollen bei Anfängerfragen nicht auf jedes Detail eingehen, und nun ist die Resonanz, dass der Regex nur für triviale Cases funktioniert. Was wollt ihr denn :bae: ? Ich wollte eigentlich nur auf Regex hinweisen, was in diesem Fall (noch) ausgezeichnet läuft 🙂
 
Ich wollte den TE nur warnen. Falls er das nicht nur zu akademischen Zwecken benötigt, stürzt er sich da gerade in eine Löwengrube. *schmunzelt*
 

Neue Themen


Zurück
Oben