my code is yielding an unexpected result. It seems my for loop skips the first iteration and I don’t understand why.
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int number;
// Ex.1.
String family_name;
String[] family_array;
System.out.println("Enter number of family members: ");
number = get.nextInt();
family_array = new String[number];
for(int i = 0; i < number; i++){
System.out.println("Enter family member name: ");
family_name = get.nextLine();
family_array[i] = family_name;
}
for(int i = 0; i < number; i++){
System.out.println(family_array[i]);
}
}
Returns… (pretend the number input are names)
Enter number of family members:
5
Enter family member name:
Enter family member name:
1
Enter family member name:
2
Enter family member name:
3
Enter family member name:
4
1
2
3
4
Why is the first get.nextLine() skipped?
Currently your call to Scanner#nextInt is not consuming the newline character so it is being passed through to your first call of
Scanner#nextLine, therefore it does not block.You will need to add
after calling
nextIntso that your first call tonextLinewill block forIO.