为什么我得到2个值作为输入而不是3个值

时间:2015-09-17 13:14:13

标签: java loops for-loop

在这段代码中,我只能获得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);
}

3 个答案:

答案 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()只读取输入直到空格。它没有读取单词之间的空格。