java——Scanner中nextLine()方法和next()方法的区别

java——Scanner中nextLine()方法和next()方法的区别        遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:importjava.util.Scanner;//Scanner中nextLine()方法和next()方法的区别publicclassScannerString{publicstatic…

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

        遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:

import java.util.Scanner;

//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(nextLine):");
        String str1 = input.nextLine();
        System.out.println(str1);

        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);
 

}}

首先第一次测试:nextLine与next都没有空格:

java——Scanner中nextLine()方法和next()方法的区别

这时的结果都是正确的。

第二次:nextLine与next都有空格:

java——Scanner中nextLine()方法和next()方法的区别

这时的结果发现next只输出了“曹老板”后面的”很有钱”并没有输出。

第三次:我们将代码中next和nextLine的顺序调整一下,然后再进行测试:

 

import java.util.Scanner;

//Scanner中nextLine()方法和next()方法的区别
public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入字符串(next):");
        String str = input.next();
        System.out.println(str);

        System.out.println("请输入字符串(nextLine):");//曹老板很有钱
        String str1 = input.nextLine();
        System.out.println(str1);
    }
}

这是调整好顺序的代码。

下面进行测试:

next与nextLine都没有空格:

java——Scanner中nextLine()方法和next()方法的区别

哇,是不时发现什么了, 我还没有输入nextLine的字符串,它已经停掉了,java——Scanner中nextLine()方法和next()方法的区别

于是我查阅了Api文档

java——Scanner中nextLine()方法和next()方法的区别

 

java——Scanner中nextLine()方法和next()方法的区别

 

知道你们看不懂,解释一下:

Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是  空白符;比如空格,回车,tab 等等。

 

 

next()方法读取到空白符就结束l;

nextLine()读取到回车结束也就是“\r”;

所以没还顺序前测试的时候next()再检测的空格的时候就结束输出了。

修改顺序后遇到的问题就是因为next()读取到空白符前的数据时结束了,然后把回车“\r”留给了nextLine();所以上面nextLine()没有输出,不输出不代表没数据,是接到了空(回车“/r”)的数据。

 

 

 

 

 

 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130124.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Python 深入浅出 – PyPDF2 处理 PDF 文件

    Python 深入浅出 – PyPDF2 处理 PDF 文件实际应用中,可能会涉及处理pdf文件,PyPDF2就是这样一个库,使用它可以轻松的处理pdf文件,它提供了读,割,合并,文件转换等多种操作。文档地址:http://pythonhosted.org/PyPDF2/PyPDF2安装PyCharm安装:File->DefaultSettings->ProjectInterpreterPdfFileR

  • 提高 Activity 跳转速度

    提高 Activity 跳转速度从一个页面跳转到另外一个页面,这在Android中是很常见的操作;有的页面跳转是瞬间打开,有的是会微微钝一下才打开;或者在页面里弹出一个Dialog弹框,明明已经调用完了show()方法,但弹框没马上弹出来,延迟了一百多毫秒才显示出来,这样给人的体验就很不好了。为什么会出现这种情况呢?页面跳转迟钝和弹框的展示延迟的原因都一样,基本分为两大类。第一类就是看看是否在UI线程左耗时操作,这个经常是数据方面的问题,比如说要从数据库里面查询数据,或者说对数据做了一些复杂逻辑的操作,例如要对集合中的数据,

  • 获取uuid_uuid4

    获取uuid_uuid4#include<string>#include<stdio.h>#ifdefined(WIN32)||defined(WINCE)||defined(WIN64)#include<objbase.h>#else#include<uuid/uuid.h>#endifstd::stringGetUUID…

  • SMTP协议详解及工作过程

    SMTP协议详解及工作过程

  • 算法学习–整型转字符串

    算法学习–整型转字符串字符串转整型的逆过程代码思路:1、输入一个整型数,判断整型数是否<0;2、不断地对整型数做取余,得出余数与‘0’相加,然后整型除去10,就是说,把整型个十百千每一位都取出来,变成ASCII码的数字,存起来;3、最后把正负号补上。代码如下:#include#include#include#includeusingnamespacestd;

    2022年10月19日
  • springaop面向切面编程_简述面向切面编程思想

    springaop面向切面编程_简述面向切面编程思想Spring理论基础-面向切面编程

发表回复

您的电子邮箱地址不会被公开。

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