我有这个代码:
Scanner scan = new Scanner(System.in);
String s2 = scan.nextLine();
int i2 = scan.nextInt();
System.out.println("natural= " + i2);
System.out.println("cadena = " + s2);
scan.close();
哪个工作正常:
这是一个字符串
1714
natural= 1714
string = 这是一个字符串
但是,如果我更改以下行的顺序Scanner
:
int i2 = scan.nextInt();
String s2 = scan.nextLine();
它会忽略该行scan.nextLine()
,并在我输入int
.
1714
自然= 1714
链条=
有谁知道发生了什么以及如何解决它?
行为
nextInt()
不是您所期望的。当您输入 a 时,1714
您实际上是在输入 a1714
和换行符(\n
),并且nextInt()
不消耗换行符 (\n
)。这意味着
nextLine()
正在读取这个换行符(它是空的 -->\n
)。要修复它,当你做一个
nextInt()
总是放一个nextLine()
没有内容的时候。从您的代码:
解决它的另一种方法是始终阅读
nextLine()
并cast
发布帖子:如果您有兴趣,在原始 SO 的这个答案中,他们会提供更多细节。