2016-11-16 4 views
0

Ich versuche, eine ganze Zahl zu scannen und eine Schleife auszuführen, um Zeichenketten bis zu dieser ganzen Zahl zu scannen. Aber dieser Code überspringt die erste Zeichenfolge ...Scannen einer Ganzzahl und einer for-Schleife, um einige Zeichenfolgen zu scannen

import java.util.ArrayList; 
import java.util.Scanner; 

public class A1 { 

    public static void main(String[] args) { 
     ArrayList <String> A = new ArrayList<String>(); 
     Scanner sc = new Scanner(System.in); 
     System.out.println("How many strings to add:"); 
     int a = sc.nextInt(); 
     for(int i=0; i<a; i++) 
     { 
      System.out.printf("Enter %dth string:\n", i+1); 
      String s = sc.nextLine(); 
      A.add(s); 
     } 

     for(int i=0; i<A.size(); i++) 
     { 
      System.out.println(A.get(i)); 
     } 
    } 

} 

Jede Lösung?

+2

Dies könnte helfen: [Scanner wird das Überspringen nextline() übernächsten() verwendet, nextInt() oder andere nextFoo() Methoden] (http://stackoverflow.com/q/13102045/669576). –

+0

Vielen Dank ... :) – p32929

Antwort

0

einfach Ihren Code ändern, um folgende:

import java.util.ArrayList; 
import java.util.Scanner; 

public class A1 { 

    public static void main(String[] args) { 
     ArrayList <String> A = new ArrayList<String>(); 
     Scanner sc = new Scanner(System.in); 
     System.out.println("How many strings to add:"); 
     int a = sc.nextInt(); 
     for(int i=0; i<a; i++) 
     { 
      System.out.printf("Enter %dth string:\n", i+1); 
      String s = sc.next();   //This will wait until you give argument 
      A.add(s); 
     } 

     for(int i=0; i<A.size(); i++) 
     { 
      System.out.println(A.get(i)); 
     } 
    } 

} 

Gehen durch den SO Post - Java Scanner doesn't wait for user input