import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i=1;
while(scan.hasNext()){
System.out.println(i + " " + scan.nextLine());
i++;
}
}
}
输出:
a
1 a
b
2 b
c
3 c
e
4
5 e
问题:当我输入时,a的输出是预期的,对于b和c也是一样的。但我按回车键而不是d,预期的输出是:“4”,但它没有输出4,相反,没有输出是给定的,当我输入e后,按回车键4“空格”和5 e都打印出来。有人能指出我在这里错过了什么吗?
2条答案
按热度按时间1tu0hz3e1#
扫描器的nextline()经过当前行并返回跳过的输入,这就是为什么每次在没有输入的情况下输入down时它都会计数,如果要避免跳过,可以尝试
scan.next()
huus2vyu2#
这是因为您正在使用
nextLine
方法。按enter键而不输入字符时,hasNext()
等待下一个字符。当您输入e然后按回车键时,hasNext()
返回。但您现在输入了两行文本:一行为空,另一行为“e”。呼叫nextLine
返回空行,在循环的下一次运行时,它返回带有“e”的行。为了防止这种情况发生,不要混合使用hasnext和nextline,使用hasnext/next或hasnextline/nextline。不同的是,第一个计算“单词”之间的空格,第二个计数行。