views:

836

answers:

3

I got the following code:

     int nnames;
 String names[];

 System.out.print("How many names are you going to save: ");
 Scanner in = new Scanner(System.in);
 nnames = in.nextInt();
 names = new String[nnames];

 for (int i = 0; i < names.length; i++){
  System.out.print("Type a name: ");
  names[i] = in.next();
 }

 System.out.println(names[0]);

When I run this code, the scanner will only pick up the first name and not the last name. And it will sometimes skip a line when trying to enter a name, it will show up as if I had left the name blank and skip to the next name. I don't know what's causing this.

I hope someone can help me!

EDIT: I have tried in.nextLine(); it fixes the complete names but it still keeps a line, here is an example of the output:

How many names are you going to save:  3
Type a name: Type a name: John Doe
Type a name: John Lennon
+1  A: 

Scanner.next stops reading when it encounters a delimiter, which is a whitespace. Use the nextLine method instead.

Amarghosh
+4  A: 

Instead of:

in.next();

Use:

in.nextLine();

nextLine() reads the characters until it finds a new line character '\n'

rogeriopvl
+1  A: 
CPerkins
+1 I've lost a programming contest recently because I used next() instead of nextLine() to skip that first \\n . That was so stupid :(
tulskiy
Was that CodeJam, by chance? I competed this year for the first time, and I got crushed - didn't even make it into round 2. But I had fun in the qual and round 1, and I'll be back next year.
CPerkins