我正在使用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();
}
}
}
以下是此程序运行时的示例输出:
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
到目前为止,我尝试了:
创建一个单独的scanner对象来获取字符串数组。这会导致一个单独的错误,如果有帮助的话,我可以与大家分享
打印name 1/7的值(为空)
1条答案
按热度按时间cxfofazt1#
您只需要在scan.nextint()之后添加scan.nextline(),因为scanner.nextint方法不会读取通过按“enter”创建的输入中的换行符,因此对scanner.nextline的调用在读取该换行符后返回。
在scanner.next()或任何scanner.nextfoo方法(nextline本身除外)之后使用scanner.nextline时,都会遇到类似的行为