java——Scanner中nextLine()方法和next()方法的区别

java——Scanner中nextLine()方法和next()方法的区别        遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:importjava.util.Scanner;//Scanner中nextLine()方法和next()方法的区别publicclassScannerString{publicstatic…

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

        遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:

import java.util.Scanner;

//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(nextLine):");
        String str1 = input.nextLine();
        System.out.println(str1);

        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);
 

}}

首先第一次测试:nextLine与next都没有空格:

java——Scanner中nextLine()方法和next()方法的区别

这时的结果都是正确的。

第二次:nextLine与next都有空格:

java——Scanner中nextLine()方法和next()方法的区别

这时的结果发现next只输出了“曹老板”后面的”很有钱”并没有输出。

第三次:我们将代码中next和nextLine的顺序调整一下,然后再进行测试:

 

import java.util.Scanner;

//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);

        System.out.println("请输入字符串(nextLine):");//曹老板很有钱
        String str1 = input.nextLine();
        System.out.println(str1);
    }
}

这是调整好顺序的代码。

下面进行测试:

next与nextLine都没有空格:

java——Scanner中nextLine()方法和next()方法的区别

哇,是不时发现什么了, 我还没有输入nextLine的字符串,它已经停掉了,java——Scanner中nextLine()方法和next()方法的区别

于是我查阅了Api文档

java——Scanner中nextLine()方法和next()方法的区别

 

java——Scanner中nextLine()方法和next()方法的区别

 

知道你们看不懂,解释一下:

Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是  空白符;比如空格,回车,tab 等等。

 

 

next()方法读取到空白符就结束l;

nextLine()读取到回车结束也就是“\r”;

所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。

修改顺序后遇到的问题就是因为next()读取到空白符前的数据时结束了,然后把回车“\r”留给了nextLine();所以上面nextLine()没有输出,不输出不代表没数据,是接到了空(回车“/r”)的数据。

 

 

 

 

 

 

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

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

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


相关推荐

  • idea激活码最新_在线激活[通俗易懂]

    (idea激活码最新)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    105
  • 小明加密通道进入_德州人行通道闸哪个牌子好

    小明加密通道进入_德州人行通道闸哪个牌子好全高转闸有了高速发展的引擎,安保成为每个,地区重要的投入,很多重要的场所需要做到无人值守全天侯的安保措施,像、从事特殊行业作业的工厂、工地等场所就成了全高转闸十足的推动者,行业的迅速发展促生了一批又一批高速发展的企业,其中深圳市志美智能科技有限公司就是其中一家行业的全高转闸供应商。同时人脸识别技术,虹膜技术,掌纹识别技术,指纹识别技术,无线射频识别技术,条码识别技术等一些新技术的应用面的不断…

    2022年6月11日
    60
  • Java配置环境变量

    Java配置环境变量Java配置环境变量要想配置环境变量先要下载好JDK点击这里可以下载可以通过鼠标下滑找到以前的版本,网页最前面的部分是最新版本,一般来说用的都是jdk1.8这个版本。点击箭头位置下载根据自己需要下载,如何知道自己是x86还是x64呢?windows电脑右键点击此电脑—>属性知道了这个,就可以点进去下载了!如果需要账户就创建账户,然后就可以下载了,因为步骤简单,不放出来了!好的,现在默认JDK已经下好了,但是笔者的JDK版本不一致,但是配置环境变量是一样的下载好之后会得到这样

    2022年6月12日
    23
  • 微型计算机硬件系统的性能主要取决6,大学计算机基础单选试题「附答案」

    微型计算机硬件系统的性能主要取决6,大学计算机基础单选试题「附答案」大学计算机基础单选试题「附答案」一、单选题1.世界上首次提出存储程序计算机体系结构的是(D)A.莫奇莱B.艾仑·图灵C.乔治·布尔D.冯·诺依曼2计算机诞生于(B)A.1941年B.1946年C.1949年D.1950年3、世界上第一台电子数字计算机采用的主要逻辑部件是(A)A.电子管B.晶体管C.继电器D.光电管4、下列叙述正确的是(D)A.世界上第一台电子计算机ENIAC…

    2022年6月28日
    56
  • TinyXml库 使用方法

    TinyXml库 使用方法TinyXml下载链接:https://pan.baidu.com/s/1kXiTFSF使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp;TinyXml类介绍:    XmlBase:整个TinyXML模型的…

    2022年5月26日
    45
  • eclipsesvn使用教程_eclipse导入svn项目

    eclipsesvn使用教程_eclipse导入svn项目做好以上的准备后打开Eclipse编译器,点击编译器右上角的OpenPerspective打开SVN资源库界面,新建一个资源库选择资源库的位置,这里我们就用刚才搭好的svn://localhost/ts作为工程目录,点击Finish后如果成功则会看到版本服务器中工程的树形结构了(可能需要用户密码验证)。在svn://localhost/ts根目录上点右键,选择“验出”(英

    2022年9月26日
    2

发表回复

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

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