为什么java scanner第一次任何一个非nextLine()方法,第二次调用nextLine()则不执行

Scannerin=newScanner(System.in);doublecount=in.nextInt();Stringtoken=in.nextLine();这样... Scanner in = new Scanner(System.in);
double count=in.nextInt();
String token=in.nextLine();
这样只会就不能继续输入
展开
 我来答
liu198661hf3e
2012-11-28 · TA获得超过366个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:253万
展开全部
nextInt() 接收一个整型字符,不会读取\n,nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
串值的一部分

比如
int n = in.nextInt()
String s1 = in.nextLine();
String s2 = in.nextLine();
假设输入:
123
test1
test2
在这种情况下,n的值为123,s1设置为空白字符,s2设置为test2因为nextInt()读入123,但并没有读入"\n",因此S1调用123所在行的剩余部分

结合不同的方法从键盘读取字符输入时,有时不得不包含一条额外的nextLine()调用,以去除行的结束符。
希望我的回答可以帮助你的理解
strionws
2012-11-28 · TA获得超过1644个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:371万
展开全部
因为你只在初始化Scanner对象的时候执行了一次System.in
所以第二次执行nextLine()的时候就出错了,因为次对象只收到了一次System.in传来的值
追问
可是我第二次不调用用in.nextLine()而是其他,就可以继续输入怎么解释呢
追答
new Scanner(System.in); 初始化这个Scanner对象的时候,
会开启一个自动等待输入的线程,只要不是连续执行in.nextLine();都会等待下一次输入。
但是在同级别的代码块中是用了两次就会出错,提示取不到数据。
如果想实现连续输入请参照下面的代码:
import java.util.Scanner;

public class Demo{
public static void main(String [] args){
Scanner s = new Scanner(System.in);
String t = "";
do{
t = ""+s.nextLine();
System.out.println("您输入的是:"+t);
}while(!t.equals("exit"));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuyu峰xx
2012-11-28 · TA获得超过106个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:101万
展开全部
初始化只执行一次
想要多次输入,就加个while 之类的,什么判断次数啥的。
只有你想不到没有实现不了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式