java用scanner是不是会有回车残留的问题

代码大概是这样的Scannerscanner=newScanner(System.in);inta=scanner.nextInt();Stringb=scanner.n... 代码大概是这样的
Scanner scanner = new Scanner(System.in);
int a=scanner.nextInt();
String b=scanner.nextLine();
上面这段代码运行时当我敲入一个整数然后回车的时候,b会吸收掉回车,从而不能给b输入值,请问有什么好的解决办法能解决这个残留的回车呢?
展开
 我来答
窖饲QCF
推荐于2017-11-26 · TA获得超过243个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:179万
展开全部
你用sc.nextInt()读一个int时如果是在一行上输入,然后按enter结束,scanner不会跳过结尾的'\n',而nextLine()的作用是跳过'\n'并返回被跳过的字符串,所以你下次nextLine()的调用由于缓冲区里已经有一个'\n',所以就直接跳到输入课程名字去了。解决方法是在nextInt()后加一句nextLine():Scanner sc = new Scanner(System.in);int conditon2 = sc.nextInt(); sc.nextLine(); // 跳过'\n' switch (conditon2) { case 1: for (int i = 0; i < theory.length ; i++) { if (theory[i] == null) { System.out.print("请输入课程编号:"); courseID = sc.nextLine(); System.out.print("请输入课程名字:"); courseName = sc.nextLine(); break;}break;default: break; } }%D%A
最爱悲惨的孩子
2019-07-06
知道答主
回答量:16
采纳率:0%
帮助的人:1.3万
展开全部

nextLine()读取的是一行字符串,什么都可以识别,包括无效字节,如果你还没有输入有效值之前打了很多空格nextLine也会认为是有效的,别的Next()识别的有效数字前面出现的空格会自动去除,所以就会有nextLine()把你前面回车识别的问题nextLine你不输入也可以识别,解决办法把后面那个换成next()或者两个都用next()这个是识别的有效数字的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式