我的代码产生了意想不到的结果.似乎我的for循环跳过第一次迭代,我不明白为什么.
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]);
}
}
Run Code Online (Sandbox Code Playgroud)
返回...(假装数字输入是名称)
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
Run Code Online (Sandbox Code Playgroud)
为什么跳过第一个get.nextLine()?
目前您的调用扫描仪#nextInt所以它正在通过传递给你的第一个电话是不消耗换行符Scanner#nextLine,所以并没有阻止.
你需要添加
get.nextLine();
Run Code Online (Sandbox Code Playgroud)
打电话后nextInt,你的第一个电话nextLine会阻止IO.