# String in Array speichern



## Bobi (20. Apr 2017)

Hallo,
es ist ein sehr einfaches Problem, aber ich verstehe nicht was ich falsch mache.
Also das Problem ist folgendes, Benutzer gibt ein Zahl wie lange der Array sein soll,
dann gibt die Strings in diesem Araay ein. Z:B wenn es  Array lenge 5 ist gibt funfmal irgendwelche nachricht ein. das wird alles mit for schleife gespeichert in Array gespeichert.
hier gibt es Problem ich kann nicht fünfte String eingeben. oder kommt so was befor ich erste String eingebe
Wie lange soll String Array sein
5
Auf dem: 0 te Platz:
Auf dem: 1 te Platz:
So sieht das Program aus

```
public class StringToInt {
 
    public static void main(String[]args){
        int x;
        String str;
        int laenge;
     
        Scanner scan = new Scanner(System.in);
        System.out.println("Wie lange soll String Array sein");
        laenge = scan.nextInt();
        String[] strAr = new String [laenge];
     
        for(int i = 0; i < strAr.length; i++){
            //x = scan.nextInt();
            //strAr[i]= scan.nextLine();
            System.out.println("Auf dem: "+ i  +" te Platz: ");
            strAr[i] = scan.nextLine();

        }
    }  
}
```


----------



## krgewb (20. Apr 2017)

Wenn ich ein int-Array anstatt eines string-Arrays deklariere und nextInt() verwende funktioniert es.


----------



## Bobi (20. Apr 2017)

Ja mit int-Array funktioniert das habe ich schon überprüft, aber mit String-Array nicht. Die Schleife fengt erst ab 1 werte zu Speichern. 0 Stelle im Array bleibt immer lehr.


----------



## Robat (20. Apr 2017)

Das liegt daran, das bei `#nextInt()` das Newline im Puffer landet (passiert im übrigen auch mit nextDouble(),.. nextFoo() Methoden). Wenn du dann das nächste mal `#nextLine()` aufrufst wird der Puffer geleert und erst danach kannst du mit `#nextLine()` vernünftig weiter einlesen.

Dein Problem würde also gelöst werden wenn du nach dem Aufruf von `scan.nextInt()` einfach ein `scan.nextLine()` nachschiebst.

Ich persönlich bevorzuge es auch nur mit `#nextLine()` zu arbeiten und dann zum jeweiligen Datentyp zu wandeln bspw mit: `int i = Integer.parseInt(scan.nextLine());` wobei man hier natürlich auf Exceptions achten muss 

Gruß Robert


----------



## Bobi (20. Apr 2017)

Danke schön für die ausführliche Antwort 

Gruß Bobi


----------

