Java中的nextLine返回意外结果
此代码未按预期工作:Java中的nextLine返回意外结果,java,file,io,Java,File,Io,此代码未按预期工作: int x=in.nextInt(); String y=in.nextLine(); System.out.println(y); 但是程序在得到x的值后终止 但是,如果我写这篇文章,它就会起作用: String y=in.nextLine(); int x=in.nextInt(); System.out.println(y); 我遗漏了什么?我猜您的输入类似于“12abc” 调用nextInt()后,stdin缓冲区中还剩下一个换行符。对nextLine(
int x=in.nextInt();
String y=in.nextLine();
System.out.println(y);
但是程序在得到x的值后终止
但是,如果我写这篇文章,它就会起作用:
String y=in.nextLine();
int x=in.nextInt();
System.out.println(y);
我遗漏了什么?我猜您的输入类似于“12abc” 调用
nextInt()
后,stdin缓冲区中还剩下一个换行符。对nextLine()
的调用将使用它,而字符串y
包含“\n”
。当你打印它时,它看起来是空白的,让你觉得nextLine()
从未被调用过。您认为应该得到的输入仍保留在stdin缓冲区中
通过调用
nextLine()
两次并丢弃第一个结果来清除换行符。检查程序的输出是否存在异常-几乎可以肯定存在异常。如果不知道您的输入是什么,就不可能自信地回答您的问题。请向我们显示您的输入。在没有看到错误的情况下,返回的下一个令牌很可能不是int
,因此会在.nextLine()中抛出一个例外添加此行-代码>紧靠此行下方-int x=in.nextInt()代码>在第一段中。我想这取决于谁在做“期待”。