在这段代码中,我只能获得2个值而不是3个输入值。为什么会这样?请解释一下。
Scanner input = new Scanner(System.in);
System.out.println("Enter how many string to get");
int size;
size = input.nextInt();
String arr[] = new String[size];
System.out.println("Enter strings one by one");
for(int i = 0; i < size; i++) {
arr[i] = input.nextLine();
System.out.println(i);
}
答案 0 :(得分:0)
请参阅此链接的答案,它会详细说明您遇到的问题:actual script is a little longer
简而言之,第一个nextLine从你的nextInt调用中读取剩下的行。
答案 1 :(得分:0)
nextInt
将从输入缓冲区中获取整数,并将新行字符留在缓冲区中。因此,当您在此之后调用nextLine
时,将返回缓冲区中的新行字符。要解决此问题,请在致电nextLine
nextInt
Scanner input = new Scanner(System.in);
System.out.println("Enter how many string to get");
int size;
size = input.nextInt();
input.nextLine();//get the new line character and ignore it
String arr[] = new String[size];
System.out.println("Enter strings one by one");
for(int i = 0; i < size; i++) {
arr[i] = input.nextLine();
System.out.println(i);
}
答案 2 :(得分:0)
使用input.nextInt()而不是input.nextLine()。 nextLine()读取包含单词之间空格的输入(即,它读取直到行的结尾\ n)。读取输入后,nextLine()将光标定位在下一行。
next()只读取输入直到空格。它没有读取单词之间的空格。