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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前端语言的发展[通俗易懂]

    前端语言的发展[通俗易懂]本文转自自阮一峰的个人博客什么是前端?维基百科是这样说的:前端(front-end)和后端(back-end)是描述进程开始和结束的通用词汇。前端作用于采集输入信息,后端进行处理。计算机程序的界面

    2022年8月4日
    9
  • Oracle PL/SQL编程之四: 把游标说透「建议收藏」

    Oracle PL/SQL编程之四: 把游标说透「建议收藏」Oracle PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)本篇主要内容如下:4.1 游标概念4.1.1 处理显式游标4.1.2 处理隐式游标4.1.3 关于 NO_DATA_FOUND 和 %NOTFOUND的区别4.1.4  使用游标更新和删除数据4.2 游标变量4.2.1  声明游标变

    2022年6月17日
    25
  • Wannacry分析

    Wannacry分析一、加密程序(WannaCryptor.exe)1.释放①概览②细节加载资源(多个zip文件),使用开源代码解压,zip文件标志(PK…)解压所得:b.wry(bmp)c.wry(含

    2022年7月1日
    31
  • jQuery自动与手动图片切换效果下载

    效果图:查看效果:http://hovertree.com/jq/hovertreeimg/下载:http://hovertree.com/h/bjaf/gk8mko69.htm使用代码:Hover

    2021年12月21日
    37
  • 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日
    2.0K
  • 视频服务器搭建流媒体_个人服务器搭建

    视频服务器搭建流媒体_个人服务器搭建
    什么样的情况下才使用FMS?有以下几种情形的时候,你可能需要用到FMS
    1、需要通过FlashPlayer播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候。渐进式下载就是仍然走http协议,youtube,土豆等站点就是。那么什么时候才真正需要用到流视频呢?
    1)视频文件超过100MB或超过10分钟,用户有seek需求的时候
    2)视频文件不需要被下载的时候,rtmp如果不行,可以试试rtmpe
    3)视频流需要多

    2022年10月20日
    3

发表回复

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

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