# PasswortGenerator



## alfaaa (27. Okt 2011)

Hallo!

Folgende Problemstellung: Separiert aus dem "merkSatz" die einzelnen Wörter und liefert als Ergebnis einen String aus den letzten Zeichen eines Wortes.
Bsp: merkSatz: "Das ist mein 1 MerkSatz, für die Klassenarbeit"
       Ergebnis: "stn1,ret"

Bis jetzt hab ich folgendes:


```
public class PasswortGenerator {
	/**
         *
	 */
	
	
	public static void main (String[] args) {

			String merkSatz = "Das ist mein 1 Merksatz, für die Klassenarbeit";
			String[] splitArray = merkSatz.split(" ");

			for (int i = 0; i < splitArray.length; i++) {				
				String neuerString = splitArray[i];
				String ergebnis = neuerString.substring(neuerString.length() -1);
				System.out.print(ergebnis);
				}
			
			}
}
```

*Meine Frage:* Ist das prinzipiell so richtig? Wie kann ich die Ausgabe in diesem Fall in eine neue Methode "auslagern", ich bekomms grad einfach nicht gebacken. Ich weiß auch grad garnicht, wie ich die main-Methode in eine neue Klasse auslagere, sozusagen als "Test-Klasse" 

Könnt ihr mir als Neuling in JAVA und in diesem Forum helfen? DANKE! 
Ich bin nicht wirklich fit in JAVA, will es ja aber alles lernen / nachholen.


----------



## faetzminator (27. Okt 2011)

Du musst einfach jeden Teil zu einem Gesamtstring hinzufügen, also etwa so:

```
String ergebnis = "";
for (String neuerString : splitArray) {
    ergebnis += neuerString.substring(neuerString.length() - 1);
}
System.out.println(ergebnis);
```
Dann kannst du es auch in eine zweite Methode auslagern:

```
public static void main(String[] args) {
    String merkSatz = "Das ist mein 1 Merksatz, für die Klassenarbeit";
    System.out.println(getPass(merkSatz));
}

public static String getPass(String input) {
    String[] splitArray = input.split(" ");

    String ergebnis = "";
    for (String neuerString : splitArray) {
        ergebnis += neuerString.substring(neuerString.length() - 1);
    }
    return ergebnis;
}
```
Dann kannst du aber eigentlich auch mit charAt() statt substring() arbeiten. Denn du benötigst immer nur einen char. Zusätzlich ist mit Strings das ewige += immer langsam, darum lieber einen StringBuilder verwenden. Das sähe etwa so aus:

```
public static String getPass(String input) {
    StringBuilder ergebnis = new StringBuilder();
    for (String neuerString : input.split(" ")) {
        ergebnis.append(neuerString.charAt(neuerString.length() - 1));
    }
    return ergebnis.toString();
}
```


----------



## SlaterB (27. Okt 2011)

geht nicht, gibts nicht

schau dir doch Methoden in Lehrbüchern an
Galileo Computing :: Java ist auch eine Insel – 5 Eigene Klassen schreiben
oder in beliebigen Beispielcode im Internet,
die grundsätzliche Deklaration, die paar wenigen Schlüsselwörter, Klammern und eigenen Namen kann dich doch nicht überfordern,
dann den Code reinkopieren und wenn es dann noch Probleme mit Rückgabewert/ Aufruf gbit oder so,
dann bist du zumindest schon viel weiter und eine Frage im Forum ist eher möglich

natürlich darfst du auch schon vorher scheitern, aber beschreibe doch bitte was du versuchst, was du warum für richtig hälst,
welche Alternativen du bedacht hast, welche Fehlermeldung du nicht verstehst usw.

neue Klasse schreiben ist dasselbe Thema, da gibts auch Buchkapitel, Beispiele überall, Ausprobieren..

edit: zu spät wieder


----------



## alfaaa (27. Okt 2011)

ich danke dir vielmals faetzminator,
@ SlaterB du hast Recht, ich muss mir das openbook nochmal öfters anschauen, das ist relativ verständlich geschrieben.

Aber ich hab ja jetzt genau das was ich wollte, so kann ich versuchen nachzuvollziehen, warum das so ist. So lern ich das irgendwie einfacher

Aber danke an euch beide!


----------

