# Hilfe beim einlesen eines Strings mit Leerzeichen



## Derenei (7. Apr 2012)

Ich habe ein Problem und zwar schreibe ich ein kleines Programm welches einen Kompletten String mit drei Namen einlist und alle drei in einer anderen form wieder ausgibt. Bin gerade erst beim ersten Namen.

Hier mein Programm:
Mein Problem am Anfang habe ich meinen String gleich mit "Max Moritz Mustermann" initialisiert.
Dann gibt mir das Programm auch Max aus. Wenn ich aber den String mit dem Befehl In.readWord () manuell einlese funktioniert es nicht(Lese ihn so ein:Max Moritz Mustermann).


```
public class Stringmanipulation
{
    public static void main ()
    {
        Out.print ("Geben Sie jetzt ihren kompletten Namen ein (Vorname - Zweitname - Nachanme): ");
        Out.println ();
        String name = "Max Moritz Mustermann";
        char []a = name.toCharArray ();
        String x = "";
        for (int i = 0; i < a.length; i++)
        {
            if (a[i] == (int)32)
            {
                x = name.substring (0, i);
                break;
            }
        }
        
        Out.print (x);
    }
}
```

Danke im Voraus


----------



## Jodo (7. Apr 2012)

Was ist In? Für Benutzereingaben bietet sich die Klasse 
	
	
	
	





```
java.util.Scanner
```
 an.


----------



## Camill (7. Apr 2012)

Vielleicht hilft dir der folgende Thread weiter: KLICK


----------



## Derenei (7. Apr 2012)

Danke für eure Antworten hat aber nichts gebracht.


----------



## Marcinek (7. Apr 2012)

Baue doch mal ein paar sys.out.printleins ein. Dann siehst du, was in den ganzen Variablen steht.

Und parallel mal das ganze auf einem Blatt papiert lösen, damit du verstehst, was da überhaupt passiert.


----------



## Final_Striker (7. Apr 2012)

Derenei hat gesagt.:


> manuell einlese funktioniert es nicht



Das ist keine nützliche Problembeschreibung.


Schau dir mal [c]String#split[/c] an. Damit kann man so etwas viel einfacher lösen.


----------



## Derenei (7. Apr 2012)

Okay ich hab das Problem gefunden, hab ein Mini Programm geschrieben welches einen String mithilfe des Befehls In.readWord () einlist und dann wieder ausgibt. Soweit so gut wenn man jetzt also "Max Moritz" einlist wird nur Max ausgegeben.

Wie lautet dann ein Befehl mit dem ich einen String mit Leertaste dazwischen einlesen kann,

Danke im Voraus.


----------



## Final_Striker (7. Apr 2012)

Derenei hat gesagt.:


> Wie lautet dann ein Befehl mit dem ich einen String mit Leertaste dazwischen einlesen kann,



Du benutzt mit In eine fremde Klasse oder Bibliothek zum Einlesen, da wird dir wohl keiner sagen können welche Methoden noch angeboten werden.

Verwende einfach die dir schon vorgeschlagene Klasse Scanner.


----------



## Derenei (7. Apr 2012)

Wie genau muss ich die Klasse Scanner  benutzen will irgendwie nicht bei mir.

Info: Bei uns im Unterricht verwenden wir nur die Klasse In. zum einlesen von Zahlen...

z.b: 

```
int a = In.readInt ();
```

Machen wird das im Unterricht Falsch???:L


----------



## Camill (7. Apr 2012)

Wie 'Final_Striker' bereits schrieb gehört die Klasse 'In' nicht zur Standardbibliothek.

So kann eine ganze Zeile mithilfe des Scanners eingelesen werden:

```
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
```


----------



## irgendjemand (7. Apr 2012)

Derenei hat gesagt.:


> Wie genau muss ich die Klasse Scanner  benutzen will irgendwie nicht bei mir.
> 
> Info: Bei uns im Unterricht verwenden wir nur die Klasse In. zum einlesen von Zahlen...
> 
> ...



ihr selbst nicht ... aber euer lehrer ... weil er mit sowas überhaupt arbeitet ...

[ot]wie ich diese möchtegern-phreaks hasse die es einfach nicht auf die reihe bekommen SE zu nutzen ... *nicht an TO sondern dessen lehrer*[/ot]


----------



## Derenei (7. Apr 2012)

Irgendwie funktioniert das mit dem einlesen mit dem scanner nicht richtig. Habe deinen Code meinem angepasst aber wenn ich übersätze steht da kann Methode Scanner nicht finden.


----------



## Camill (7. Apr 2012)

Dann fehlt mit Sicherheit das import.


----------



## FaxXer (7. Apr 2012)

Du musst die Scanner Klasse importieren.


----------



## Final_Striker (7. Apr 2012)

```
import java.util.Scanner;
```


----------



## Derenei (7. Apr 2012)

Danke an alle jetzt gehts

Hier mein fertiges Programm:

```
import java.util.Scanner;
public class Stringmanipulation
{
    public static void main ()
    {
        Out.println ("Geben Sie jetzt ihren kompletten Namen ein (Vorname - Zweitname - Nachanme, z.b Max Moritz Mustermann): ");
        Out.println ();
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        name = name+" ";
        char []a = name.toCharArray ();
        String x = " ";
        String y = " ";
        String z = " ";
        int i = 0;
        int j = 0;
        int k = 0;
        for (i = 0; i < a.length; i++)
        {
            if (a[i] == (int)32)
            {
                x = name.substring (0, i);
                break;
            }
        }
        
        for (j = i+1; j < a.length; j++)
        {
            if (a[j] == (int)32)
            {
                y = name.substring (i+1, j);
                break;
            }
        }
        
        for (k = j+1; k < a.length; k++)
        {
            if (a[k] == (int)32)
            {
                z = name.substring (j+1, k);
                break;
            }
        }
        char []y1 = y.toCharArray ();
        Out.print (z+", "+x+" "+y1[0]+".");
    }
}
```


----------



## Marcinek (7. Apr 2012)

Und wenn jemand entweder nur 2 Namen eingibt oder 4...? ;D


----------

