Java 扫描器获取用户输入的整数,然后获取字符串数组,但跳过第一个输入的字符串

Java 扫描器获取用户输入的整数,然后获取字符串数组,但跳过第一个输入的字符串,java,arrays,java.util.scanner,primitive-types,Java,Arrays,Java.util.scanner,Primitive Types,我正在使用Scanner对象获取用户输入。扫描仪首先获取一个名为“num”的整数。然后,我创建一个大小为'num'的字符串数组,并用同一扫描仪通过for循环接收的字符串填充该数组。我的问题是,当获取第一个字符串值时,扫描器似乎通过为其分配一个空字符串来“跳过”它。为什么要这样做 import java.util.Scanner; public class KrisKindle { public static void main(String[] args) { Sca

我正在使用Scanner对象获取用户输入。扫描仪首先获取一个名为“num”的整数。然后,我创建一个大小为'num'的字符串数组,并用同一扫描仪通过for循环接收的字符串填充该数组。我的问题是,当获取第一个字符串值时,扫描器似乎通过为其分配一个空字符串来“跳过”它。为什么要这样做

import java.util.Scanner;

public class KrisKindle {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
    
        System.out.println("How many people are there?");
        int num = scan.nextInt();
    
        String[] names = new String[num];
    
        for(int i = 0; i < names.length; i++) {
            System.out.println("Enter name of person " + (i +1) + "/" + num);
            names[i] = scan.nextLine();
        }
    
    }
}
到目前为止,我所尝试的:

  • 创建单独的Scanner对象以获取字符串数组。这会导致一个单独的错误,如果有帮助的话,我可以与大家分享
  • 打印名称1/7的值(为空)

您只需要在scan.nextLine()之后添加scan.nextLine(),因为Scanner.nextLine方法不会读取通过点击“Enter”创建的输入中的换行符,因此在读取该换行符后会返回对Scanner.nextLine的调用

在Scanner.next()或任何Scanner.nextFoo方法(nextLine本身除外)之后使用Scanner.nextLine时,您将遇到类似的行为

公共类Kindle{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“有多少人?”);
int num=scan.nextInt();
scan.nextLine();//必须添加的此行(它使用\n字符)
字符串[]名称=新字符串[num];
for(int i=0;i
您只需要在scan.nextLine()之后添加scan.nextLine(),因为Scanner.nextLine方法不会读取通过点击“Enter”创建的输入中的换行符,因此在读取该换行符后会返回对Scanner.nextLine的调用

在Scanner.next()或任何Scanner.nextFoo方法(nextLine本身除外)之后使用Scanner.nextLine时,您将遇到类似的行为

公共类Kindle{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“有多少人?”);
int num=scan.nextInt();
scan.nextLine();//必须添加的此行(它使用\n字符)
字符串[]名称=新字符串[num];
for(int i=0;i
这是有效的。谢谢你,伊纳克!不客气。你能把答案也投上吗?我投了,但因为我的帐户是新的,所以不会显示它。下面是我投票时看到的:谢谢你的反馈!声誉低于15的人所投的票会被记录下来,但不会改变公开显示的帖子分数。这是有效的。谢谢你,伊纳克!不客气。你能把答案也投上吗?我投了,但因为我的帐户是新的,所以不会显示它。下面是我投票时看到的:谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。
How many people are there?
7
Enter name of person 1/7
Enter name of person 2/7
Adam
Enter name of person 3/7
Eve
Enter name of person 4/7
public class KrisKindle {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("How many people are there?");
        int num = scan.nextInt();
        scan.nextLine();  // This line you have to add (It consumes the \n character)
        String[] names = new String[num];

        for(int i = 0; i < names.length; i++) {
            System.out.println("Enter name of person " + (i +1) + "/" + num);
            names[i] = scan.nextLine();
        }

    }
}