zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Hibernate第二天:Hibernate的一级缓存、其他的API
    Hibernate第一天(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD)
    数据结构基础(一)数组,矩阵
    MyEclipseSVN插件百度云下载
    修改CentOS主机名
    Word中增加仿宋GB-2312字体
    Linux系统常用基本命令总结
    SpringBoot视频教程 百度云
    VM虚拟机中linux centOS 联网单网卡配置教程
    Java正则表达式匹配日期及基本使用
  • 原文地址:https://www.cnblogs.com/gjmhome/p/11349395.html
Copyright © 2011-2022 走看看