Java 中的迭代器
While iterator in Java
我在 java 中遇到异常情况,我无法解决问题。
在我的主 class 中,我有以下代码:
(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++;
}
但是在 while 循环的第一次迭代中,我没有被要求写一个名字。然而,文本 "Enter name number 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
其中 >>
是用户输入的文本。
谁能解释为什么会这样?
Scanner#nextInt
不会 消耗 '\n'
字符(插入 int
后按下的回车键),场景:
>>> How many names do you want to enter?
>>> 5 (and hit enter)
>>> Enter name number
>>> \n (consumed)
>>>
解决方案:
- 在
nextInt
之后再放一个 nextLine
以便消耗那个角色
- (不推荐,但可能会帮助您理解您的问题)有另一个
Scanner
个实例
我在 java 中遇到异常情况,我无法解决问题。
在我的主 class 中,我有以下代码:
(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++;
}
但是在 while 循环的第一次迭代中,我没有被要求写一个名字。然而,文本 "Enter name number 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
其中 >>
是用户输入的文本。
谁能解释为什么会这样?
Scanner#nextInt
不会 消耗 '\n'
字符(插入 int
后按下的回车键),场景:
>>> How many names do you want to enter?
>>> 5 (and hit enter)
>>> Enter name number
>>> \n (consumed)
>>>
解决方案:
- 在
nextInt
之后再放一个nextLine
以便消耗那个角色 - (不推荐,但可能会帮助您理解您的问题)有另一个
Scanner
个实例