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”)的数据。

 

 

 

 

 

 

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

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

(0)
上一篇 2022年4月27日 下午11:20
下一篇 2022年4月27日 下午11:20


相关推荐

  • 常见计算机病毒类型及原理「建议收藏」

    常见计算机病毒类型及原理「建议收藏」杀毒软件是根据什么来进行病毒判断并查杀得呢?病毒检测的方法在与病毒的对抗中,及早发现病毒很重要。早发现,早处置,可以减少损失。检测病毒方法有:特征代码法、校验和法、行为监测法、软件模拟法这些方法依据的原理不同,实现时所需开销不同,检测范围不同,各有所长。特征代码法特征代码法被早期应用于SCAN、CPAV等著名病毒检测工具中。国外专家认为特征代码法是检

    2022年6月5日
    47
  • MATLAB GUI显示图片的方法

    MATLAB GUI显示图片的方法前言  在MATLAB的命令行中显示图片或者数据,十分简单,仅通过imshow,plot或者imagesc等函数即可。  而在MATLABGUI中显示图片,通常需要借助Axes控件来实现。相比而言,多一些操作。在GUI中显示图片  创建一个空白的界面  在GUIDE中,添加一个按钮,然后再添加一个Axes控件,适当调整两者比例。然后在Button的回调函数中添加如下代码%…

    2022年6月11日
    284
  • Golang: 什么时候nil != nil

    Golang: 什么时候nil != nil最近在做 Go 语言开发工作中遇到不少坑 今天来理一理在哪些情况下我们使用 操作符号对比时候 nil nil 以及我们如何避免在代码中遇到这些问题 我们先定义两个不同类型的变量 每个变量都赋值为 nil vara int nilvarbinter nil 想象一下下面的代码会输出什么结果 fmt Println a nil a nil fmt Pr

    2026年3月16日
    2
  • 逻辑漏洞思维导图

    逻辑漏洞思维导图逻辑漏洞思维导图逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序后随着人的思维逻辑产生的不足。sql注入、xss等漏洞可以通过安全框架等避免,这种攻击流量非法,对原始程序进行了破坏,防火墙可以检测,而逻辑漏洞是通过合法合理的方式达到破坏,比如密码找回由于程序设计不足,会产生很多问题,破坏方式并非向程预防思路。…

    2022年5月30日
    38
  • 拒绝干篇一律!讯飞星火秋招“整活”,奇妙夜“脱口秀”来点不一样

    拒绝干篇一律!讯飞星火秋招“整活”,奇妙夜“脱口秀”来点不一样

    2026年3月14日
    2
  • OpenAI ChatGPT(四):十分钟读懂 GPT

    OpenAI ChatGPT(四):十分钟读懂 GPT

    2026年3月17日
    2

发表回复

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

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