而在Java中使用迭代器

Jac*_*son 3 java iterator

我在java中遇到了一个异常,我无法解决这个问题.

在我的主要课程中,我有以下代码:

(import java.util.*;)
...

Scanner input = new Scanner(System.in);

String name;
int i = 1;

System.out.println("How many names do you want to enter?");
int iteratorCount = input.nextInt();
iteratorCount++;

  while (i < iteratorCount){
  System.out.println("Ener name number "+i);
  name = input.nextLine();
  System.out.println(name);
  i++;
  }
Run Code Online (Sandbox Code Playgroud)

但是在while循环的第一次出现期间,我不会被要求写一个名字.但是,确实显示"输入名称编号1"文本.这是输出:

How many names do you want to enter?
>>5
Ener name number 1

Ener name number 2
>>Jack
Jack
Ener name number 3
>>John
John
Ener name number 4
>>Lisa
Lisa
Ener name number 5
>>Paul
Paul
Run Code Online (Sandbox Code Playgroud)

这里>>是用户输入的文本.

任何人都可以解释为什么会这样吗?

Mar*_*oun 6

Scanner#nextInt 消耗'\n'字符(插入后输入的输入键int),方案:

>>> How many names do you want to enter?
>>> 5 (and hit enter)
>>> Enter name number 
>>> \n (consumed)
>>> 
Run Code Online (Sandbox Code Playgroud)

解决方案:

  • 为了消费那个角色nextLine,nextInt在另一个之后放另一个
  • (不推荐但可能帮助您理解您的问题)有另一个Scanner实例