Scanner类中的nextLine()产生的换行符问题

来源:互联网 发布:大学生的网络购物情况 编辑:程序博客网 时间:2024/06/06 14:21

Scanner类中的nextLine()产生的换行符问题

Scanner中,nextInt()不会读取或识别用户输入的和遗留的换行符,但是nextLine()会识别

本文章纯属原创,转载请注明作者,谢谢

代码块

例如:

System.out.print("请输入水果价格:");fruit.setPrice(input.nextInt());System.out.print("请输入水果数量:");fruit.setCount(input.nextInt());System.out.print("请输入水果描述:");fruit.setIntroduction(input.nextLine());

在输入的过程中,nextInt()没有读取上一次输入nextInt()输入时留下的“\n”
但是nextLine()读取了上一次输入nextInt()留下的“\n”,所以没有给用户输入(软件认为用户输了一个”\n”),而是直接换行了。

请输入水果名称:apple请输入水果价格:10请输入水果数量:20请输入水果描述:添加成功

修改方法:将nextLine()会读入但不需要的”\n”过滤掉。如下面的if操作:

System.out.print("请输入水果价格:");fruit.setPrice(input.nextInt());System.out.print("请输入水果数量:");fruit.setCount(input.nextInt());/*此处的if判断作用为消除inpu.nexInt()语句遗留下来的"\n",inpu.nexInt()不会读取换行符,但是inpu.nextLine()会读取换行符,如果此处不处理,则在执行下面的input.nextLine()时会读取上一次输入时遗留的换行符,然后直接换行,不会读取用户的输入数据(或者说用户根本就无法输入数据)*/if (input.nextLine() != "\n") {}System.out.print("请输入水果描述:");fruit.setIntroduction(input.nextLine());

运行结果:

请输入水果名称:apple请输入水果价格:10请输入水果数量:50请输入水果描述:very well添加成功

当然用户也可以按照下列的方式进行过滤。(强迫症,不能忍,所以写了上面的那种方法,输出结果请自行调试)

System.out.print("请输入水果价格:");fruit.setPrice(input.nextInt());System.out.print("请输入水果数量:");fruit.setCount(input.nextInt());input.nextLine();-----------------System.out.print("请输入水果描述:");fruit.setIntroduction(input.nextLine());

注意:有时nextLine()这行并不会报错,但是问题却是产生于这一行,使用过程中一定要小心。
建议:能不用时尽量不要使用nextLine(),尽量使用next()。


2 0
原创粉丝点击