nextline函数_nextLine()和next()的区别和使用方法

nextline函数_nextLine()和next()的区别和使用方法最近在笔试,刷剑指Offer时,都是只需要把方法实现了就行。但是!!!笔试时候会发现,大部分会要求你把main函数也code出来,真是醉了,第一次笔试时候搞的晕乎乎的…..废话不多说,那么在写输入输出中,肯定要用到Scanner类了,其中不少都需要读取一个整数或者一个整型数组。当读入整数时(以int为例),直接就nextInt()就好,可是当读入一个整型数组时(数字之间用空格隔开),就涉及到用…

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

最近在笔试,刷剑指Offer时,都是只需要把方法实现了就行。但是!!!笔试时候会发现,大部分会要求你把main函数也code出来,真是醉了,第一次笔试时候搞的晕乎乎的…..

废话不多说,那么在写输入输出中,肯定要用到Scanner类了,其中不少都需要读取一个整数或者一个整型数组。当读入整数时(以int为例),直接就nextInt()就好,可是当读入一个整型数组时(数字之间用空格隔开),就涉及到用nextLine()和next()了。看了一下网上的分析,都很到位吗,在这里我在总结一下希望给大家提供一些思考,于此同时也给自己加深一下记忆!

next()

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。比如,在控制台输入“  gjm  gjm ”时,一次next()读入进来的仅仅是”gjm”。它不能得到带空格的字符串的!

nextLine()

nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符。比如,在控制台输入“  gjm  gjm ”时,一次nextLine()读入进来的结果是”  gjm  gjm “。它是可以得到带空格的字符串的!

网上有个小例子,我看着挺好,如下:

1 importjava.util.Scanner;2

3 public classNextTest {4 public static voidmain(String[] args) {5 test1();6 //test2();

7 }8

9 public static voidtest1() {10 String s1,s2;11 Scanner sc=newScanner(System.in);12 System.out.print(“请输入第一个字符串:”);13 s1=sc.nextLine();14 System.out.print(“请输入第二个字符串:”);15 s2=sc.next();16 System.out.println(“输入的字符串是:”+s1+” “+s2);17 }18 public static voidtest2() {19 String s1,s2;20 Scanner sc=newScanner(System.in);21 System.out.print(“请输入第一个字符串:”);22 s1=sc.next();23 System.out.print(“请输入第二个字符串:”);24 s2=sc.nextLine();25 //s2=sc.nextLine();26 System.out.println(“输入的字符串是:”+s1+” “+s2);27 }28 }

结果:

当运行test1();时,结果如下示:

nextline函数_nextLine()和next()的区别和使用方法

当运行test2();时,结果如下示:

nextline函数_nextLine()和next()的区别和使用方法

即在我刚输入完home后,按下回车,直接弹出结果,程序执行完毕【内心呼啸,tmd我第二个字符串还没输入呢就给劳资返回结果了】。

通过分析发现:是next()读不到回车的,而是将回车作为分隔符,并且留给了nextLine(),nextLine()毫不客气,直接读入,然后结束。

故想要输出和test1()一样的结果,需要将test2()中nextLine()后再加一个nextLine(),第一个用来读next()留下的回车分隔符,第二个用来读work。故如上所示,将第25行程序加入,然后执行,就会发现结果和test1()一样。

Over…

参考:

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

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

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


相关推荐

  • webservice传参数_java有参构造方法

    webservice传参数_java有参构造方法一、获取接口信息:  使用工具soapUI获取接口调用信息:  双击request:复制接口调用格式:webService接口通常传递xml参数因此需要组装数据: ①若传递单个参数则:<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:cen…

    2022年10月16日
    0
  • Python的6种内建序列之通用操作

    Python的6种内建序列之通用操作

    2021年10月21日
    38
  • Ubuntu命令卸载软件「建议收藏」

    Ubuntu命令卸载软件「建议收藏」1.打开一个终端,输入dpkg–list,按下Enter键,终端输出以下内容,显示的是你电脑上安装的所有软件。2.在终端中找到你需要卸载的软件的名称,列表是按照首字母排序的。3.在终端上输入命令sudoapt-get–purgeremove包名(–purge是可选项,写上这个属性是将软件及其配置文件一并删除,如不需要删除配置文件,可执行sudoapt-getr…

    2022年5月30日
    36
  • DM368开发 — 你需要了解的知识点

    DM368开发 — 你需要了解的知识点一、标清、高清、全高清、超清(超高清)的区别480×320,640×480标清1024x720p高清1920x1080i(隔行扫描)也属于高清1920x1080p全高清3840×2160,7680×4320超(高)清========================================480P、720P、1080P是什么意思?720P是美国电影电视工程师协会(SMPTE

    2022年8月13日
    1
  • jlink 与 swd 接口定义

    jlink 与 swd 接口定义1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    50
  • IIS管理器在哪里_internet信息服务怎么打开

    IIS管理器在哪里_internet信息服务怎么打开我们在搭建网络配置时就需要找到internet信息服务(IIS)管理器,下面我们就来看看internet信息服务(IIS)管理器在哪里能够找到。我们在搭建网络配置时就需要找到internet信息服务

    2022年8月1日
    2

发表回复

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

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