nextLine()和next()的区别和使用方法
Posted gjmhome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nextLine()和next()的区别和使用方法相关的知识,希望对你有一定的参考价值。
最近在笔试,刷剑指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 import java.util.Scanner; 2 3 public class NextTest 4 public static void main(String[] args) 5 test1(); 6 //test2(); 7 8 9 public static void test1() 10 String s1,s2; 11 Scanner sc=new Scanner(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 void test2() 19 String s1,s2; 20 Scanner sc=new Scanner(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();时,结果如下示:
- 当运行test2();时,结果如下示:
即在我刚输入完home后,按下回车,直接弹出结果,程序执行完毕【内心呼啸,tmd我第二个字符串还没输入呢就给劳资返回结果了】。
通过分析发现:是next()读不到回车的,而是将回车作为分隔符,并且留给了nextLine(),nextLine()毫不客气,直接读入,然后结束。
故想要输出和test1()一样的结果,需要将test2()中nextLine()后再加一个nextLine(),第一个用来读next()留下的回车分隔符,第二个用来读work。故如上所示,将第25行程序加入,然后执行,就会发现结果和test1()一样。
Over...
参考:
1. https://blog.csdn.net/Zhiyuan_Ma/article/details/51592730
以上是关于nextLine()和next()的区别和使用方法的主要内容,如果未能解决你的问题,请参考以下文章
Scanner类的next() 和nextLine()的区别
Scanner类的next() 和nextLine()的区别
Scanner类的next() 和nextLine()的区别