Stringelemente

WinterMensch

Mitglied
Hallo,

Ich suche nach einem Algorithmus mit dem ich beliebig viele Kommandozeilenparameter einlesen kann und diese dann so verändern, dass ich eine Ausgabe bekommen aus mehreren Wörtern. Das erste Wort soll immer die ersten Buchstaben der Strings enthalten, das zweite die zweiten Buchstaen, usw..

Also zum Beispiel:


java Programm abcde fg hij k lmno
afhkl bgim cjn do e
 
M

Marcinek

Gast
Die parameter kommen ja in der main in String[] args ja an.

Dann musst du darüber iterieren und schaust bei jedem Durchlauf, ob das Wort auch den n-ten Buchstaben enthält.

Wenn ja, dann gibst du ihn aus, sonst nicht.
 
H

hüteüberhüte

Gast
Was möchtest du machen? Überhaupt noch nicht verstanden.

Gib mal ein Beispiel für Eingabe und Ausgabe an.

Danke.
 

WinterMensch

Mitglied
Ja das ist mir schon klar...

Also ich möchte beliebig viele kommandozeilenparameter einlesen und dann von jedem einzelnen den ersten Buchstaben nehmen und diese aneinander hängen. Das soll dann ein neues Wort sein. Das nächste Wort soll aus den jeweils zweiten Buchstaben bestehen usw.

Also zum Beispiel:

java Programm hallo ich bin neu hier
hibnh aciei lhnue lr o

Wenn also ein Wort weniger Buchstaben als andere haben soll die Position einfach weggelassen werden.
Am liebsten wäre mir ein rekursiver Vorschlag.
 

Landei

Top Contributor
Java:
public class Foo {
  public static void main(String... args) {
     for(int i = 0; ; i++) {
         String r = "";
         for(String s:args) 
             if (s.length() > i) r += s.charAt(i);
         if (r.isEmpty()) break;
         System.out.print(r + " "); 
     }
  } 
}
 

WinterMensch

Mitglied
Danke Landei, ich hab es jetzt verstanden, ich bin nicht darauf gekommen mir einfach einen neuen String zusammen zu bauen... Ich dachte nämlich dass würde auch ohne funktionieren. Tat es aber nicht.. :)
 
H

hüteüberhüte

Gast
String-Konkatenation sollte vermieden werden:

Java:
/**
 * @author hütte
 */
public class ErsteBuchstaben {

    public static void main(String[] args) {
        if (args.length == 0) {
            args = "Dies ist ein Test".split(" ");
        }

        StringBuilder b = new StringBuilder(); // [url=http://stackoverflow.com/questions/5192512/how-to-clear-empty-java-stringbuilder]How to clear/empty Java Stringbuilder - Stack Overflow[/url]
        for (int i = 0;; i++) {
            for (String str : args) {
                if (i < str.length()) {
                    b.append(str.charAt(i));
                }
            }
            if (b.length() == 0 || b.charAt(b.length() - 1) == ' ') {
                break;
            }
            b.append(" ");
        }

        System.out.println(b);
    }
}

Code:
DieT isie etns st

Klingt fast wie Latein. ^^
 

Landei

Top Contributor
Natürlich kannst du aus meinem r einen StringBuilder machen, ich bin jetzt mal davon ausgegangen, dass man keinen Roman als Kommandozeilenargument übergibt. Warum man alles in einen StringBuilder packen sollte, statt jedes Wort auszugeben, wenn es fertig ist, erschließt sich mir nicht so ganz.
 

Landei

Top Contributor
Wenn du in einer Schleife sehr viele Strings "addierst", werden (da Strings unveränderlich sind) viele unnötige Objekte angelegt. Ein (veränderlicher) StringBuilder kann dagegen den ganzen Krempel erst mal zusammensammeln, und erst ganz am Ende einen String draus machen,

Ist natürlich akademisch, wenn man über fünf Worte oder so spricht.
 
T

TryToHelp

Gast
Ich glaube törööö ist das schon bewust, aber wollte wissen, warum es in diesem Kontext zu vermeiden ist, nicht bei aufwendigen und großen Stringoperationen.
 
H

hüteüberhüte

Gast
Ich hoffe, ich habe nicht zufällig das Passwort von irgendwem erraten. ^^

mWn kann man soviel Blabla-Text übergeben, wie man lustig ist, und generell Konkatenation in Schleifen vermeiden. War das ein Trollversuch von euch? ;)

@TO: " " ist z.B. ein String-Literal, welches aus dem string pool kommen kann, weshalb nicht immer ein neuer String erstellt werden muss.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Stringelemente in Stringarray verteilen. Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben