Java的Scanner输入时,next()和nextLine()的区别[通俗易懂]

Java的Scanner输入时,next()和nextLine()的区别[通俗易懂]nextLine()不要和其他next方法一起用!!!尤其nextLine()不要放在它们后面!!!这个问题已经坑了我好多次了,但是每次都没有在意,主要是没反应过来出现问题的原因。今天阿里内推测验,又被nextLine()狠狠坑了一下。逻辑思路都是对的,就输入的数据不对。因为限时半小时,所以时间比较紧张,最后还是没弄出来。后来百度查了两者区别,果然问题是出在这里,改完之后问题就解决了。可怜我的…

大家好,又见面了,我是你们的朋友全栈君。

nextLine()不要和其他next方法一起用!!!尤其nextLine()不要放在它们后面!!!

这个问题已经坑了我好多次了,但是每次都没有在意,主要是没反应过来出现问题的原因。今天阿里内推测验,又被nextLine()狠狠坑了一下。逻辑思路都是对的,就输入的数据不对。因为限时半小时,所以时间比较紧张,最后还是没弄出来。后来百度查了两者区别,果然问题是出在这里,改完之后问题就解决了。可怜我的阿里内推测评。

首先是大家共所周知的区别

nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。

接下来是重头戏

next()在输入有效字符之后,将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

nextLine()方法的结束符只是Enter键

所以

nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法从键盘输入值。

经过验证,其他的next的方法,如nextDouble()  ,nextFloat() ,nextInt() 等与nextLine()连用时都存在这个问题。

具体点就是

nextLine()不能用在nextInt()的后面!!!!

解决方法有两种

第一种

在每一个 next()、nextDouble()  、nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。

第二种

把nextLine()改为next()

例如如下代码

//part1
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        sc.nextLine();//这里不加nextLine()就会出问题
        int x[]=new int[n];
        int y[]=new int[n];
        for(int i=0;i<n;i++){
            String b = sc.nextLine();
            String c[]=b.split(",");
            x[i]=Integer.parseInt(c[0]);
            y[i]=Integer.parseInt(c[1]);

        }
//part2
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt(); 
        int x[]=new int[n];
        int y[]=new int[n];
        for(int i=0;i<n;i++){
            String b = sc.next();//这里用next()就可以了
            String c[]=b.split(",");
            x[i]=Integer.parseInt(c[0]);
            y[i]=Integer.parseInt(c[1]);

        }

总之,nextLine()不要和其他next方法一起用!!!尤其nextLine()不要放在他们后面!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132586.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何使用手机免费将PDF转Word还不限页数

    如何使用手机免费将PDF转Word还不限页数手机如何将PDF转换成Word?有时一些PDF资料需要修改才能使用,电脑端的修改已经很复杂了,更何况手机端安装软件和使用都更困难,而且有一些PDF文档本身就是扫描版无法进行修改,那么我们就只能将PDF转成Word后再编辑。目前一些能搜索的免费转换工具大多都付费,就算免费使用的也是很多限制,比如只能转换前3页或前5页,那么如何免费将手机里的PDF转换成Word还不限制页数呢?下面分享一个简单好用的方法,只需要三步就能轻松完成转换。第一步,首先打开手机的浏览器,输入speedpdf进行搜索,一般搜索结果第一

    2022年4月29日
  • JavaScript实现竖直文本滚动

    JavaScript实现竖直文本滚动

    2021年11月24日
  • pycharm2021最新激活码_通用破解码

    pycharm2021最新激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • executescalar mysql_ExecuteScalar

    executescalar mysql_ExecuteScalar这两个答案和一点点思考使我想到了一个接近答案的东西。首先再澄清一下:该应用程序是用C#(2.0+)编写的,并使用ADO.NET与SQLServer2005进行通信。镜像设置是托管主体和镜像的两个W2k3服务器以及托管作为监视器的快速实例的第三个服务器。这样做的好处是,故障转移对于使用数据库的应用程序几乎是透明的,它将对某些连接引发错误,但从根本上讲一切都会很好地进行。是的,我们得到了奇怪的误报…

    2022年6月30日
  • 【Win10 64位 Modelsim安装教程】双击patch_dll.bat时一闪而过/找不到文件mgls.dll的解决方法

    【Win10 64位 Modelsim安装教程】双击patch_dll.bat时一闪而过/找不到文件mgls.dll的解决方法关于双击patch_dll.bat之后一闪而过,没有生成LICENSE.TXT的解决方案其实不是一闪而过,仔细看一下显示的是“找不到文件-mgls.dll”win+R,输入cmd在cmd中从根目录一步一步进入win64文件夹,运行patch_dll.bat即可。我安装的时候等了两分钟才生成LICENSE.TXT,所以回车后没反应的话,多等一会试试。如图:完整的破解教程其实破解…

    2022年5月23日
  • micro f1和macro f1_correct score

    micro f1和macro f1_correct score首先,明确一个概念,精确率(Precision)和召回率(Recall)并不是只有在目标检测中才有的,是所有任务涉及到分类的都有。而且P和R是针对于每一类来说的,每一个类别都有自己的准确率和召回率,计算每一个类别时,该样本即为正样本,其他样本统一为负样本来计算。首先,先说F1score,它其实是用来评价二元分类器的度量。F1是针对二元分类的,那对于多元分类器,有没有类似F1score的度量方法呢?那就是这里提到的micro-F1和macro-F1macro-F1…

    2022年10月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号