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()的区别和使用方法的主要内容,如果未能解决你的问题,请参考以下文章

Java sanner类中next和nextLine的区别

Scanner类的next() 和nextLine()的区别

Scanner类的next() 和nextLine()的区别

Scanner类的next() 和nextLine()的区别

Scanner类的next() 和nextLine()的区别

转:Scanner中nextLine()方法和next()方法的区别