首页 > 其他分享 >next()和nextLine()一起使用时出现的问题

next()和nextLine()一起使用时出现的问题

时间:2023-02-26 18:35:03浏览次数:39  
标签:nextLine Scanner System next 一起 输入 out

next()和nextLine()一起使用时出现的问题

问题描述:

在同时使用同一个Scanner对象下的next()和nextLine()时,且next()正好在nextLine()上一句执行时,在执行完next()之后会导致nextLine()直接跳过,无法在控制台上进行输入。代码如下。

问题补充:其它的如nextDouble() ,nextFloat() ,int nextInt() 等方法与nextLine()连用时,也会出现如上图所示情况。

		Scanner scanner = new Scanner(System.in);
        System.out.print("请输入字符一:" + '\n');
        String i = scanner.next();
        System.out.print("请输入字符二:" + '\n');
        String j = scanner.nextLine();
        System.out.println("您输入的字符一i为:" + i);
        System.out.println("您输入的字符二j为:" + j);

image

这种情况下无法在控制台中输入字符二的内容。

问题分析:

程序运行后我们在控制台输入了123,按下回车键表示输入结束,准备去输入字符串的值,结果程序直接结束了。输出结果只有123 。

这是因为在我们按下回车键结束数字输入时,由于回车键是\r\n,属于字符串,而下面要录入的也刚好是字符串,系统就默认将\r\n 给了str,而nextLine() 方法解结束符也恰好为回车符,所以结束了字符串的输入。

[https://blog.csdn.net/weixin_45890113/article/details/126199142]:

解决办法:

  1. 将next()和nextLine()调换位置,代码如下
		Scanner scanner = new Scanner(System.in);
        System.out.print("请输入字符一:" + '\n');
        String j = scanner.nextLine();
        System.out.print("请输入字符二:" + '\n');
        String i = scanner.next();
        System.out.println("您输入的字符一i为:" + i);
        System.out.println("您输入的字符二j为:" + j);

image

该种情况下即可正常输出。

  1. next()和nextLine()使用不同的Scanner对象进行创建
        Scanner scanner = new Scanner(System.in);
        Scanner scanner1 = new Scanner(System.in);

        System.out.print("请输入字符一:" + '\n');
        String i = scanner.next();

        System.out.print("请输入字符二:" + '\n');
        String j = scanner1.nextLine();
        System.out.println("您输入的字符一为:" + i);
        System.out.println("您输入的字符二为:" + j);

image

标签:nextLine,Scanner,System,next,一起,输入,out
From: https://www.cnblogs.com/shuiyunmiao/p/17157244.html

相关文章

  • 速来~与 Werner Vogels 博士一起探索敏捷性与创新速度一起提升的秘方
    AmazonWebServices的现代应用程序创新一直是Amazon公司坚持追求的核心目标。约20年前,我们经历了一次彻底的转型,旨在建立起“发明、发布、再发明、再发布、重新开始、......
  • Vue中的nextTick理解
    一、NextTick是什么官方定义:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。我们可以理解成,Vue在更新DOM时是异步执行......
  • 深入学习jquery源码之next()和nextAll()与nextUntil()
    深入学习jquery源码之next()和nextAll()与nextUntil()next([expr])概述取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。这个函数只返回后面那个紧邻......
  • python next() iter()使用
    说明:next()、iter()这两个函数一般配套使用。下面先介绍用法,后说明用途。用法:iter(object):生成可迭代对象的迭代器;object必须是可迭代对象,比如list、tuple、dict等;next(i......
  • nextFloat()的一些问题
    关于nextFloat()的一些问题 publicstaticvoidmain(String[]args){​    floatb=0.0F;​    Scannerscanner=newScanner(System.in);  ......
  • Latest BMW ICOM NEXT Firmware Update
    ManypeoplehavebeenhavingtroubleupdatingICOM’sfirmwareviaISTA+sincethelasttwoupdateswithICOMFW.Whentheytrytoupdate,itshowsthatISTAi......
  • Nextjs Contentful GraphQL Vercel Edges
    配置contentful创建免费账号根据提示进行操作,ContentModel-创建页面属性模板(personalWebsite)contententry - 根据属性模板,添加内容,最后发布APIcall-......
  • 一起看看小程序定制开发的基本流程!
    定制开发小程序比起模板来说,流程更加复杂,下面就个大家简单介绍一下小程序开发的基本流程。1、梳理需求。企业和开发公司详细沟通,了解需求企业的具体想法和目的,开发公司进......
  • 00022.08 Scanner的next()和nextLine()区别
    系列文章目录文章目录​​系列文章目录​​​​一、Scanner:​​​​二、使用步骤​​​​总结​​一、Scanner:Scanner:(1)next():遇到空白符就认为输入结束(2)nextLine():遇到换......
  • Set Next-Hop IP Address
    TheinfrastructureprovidedbyCEForprocessswitchingperformstherecursiontothenext-hopIPaddress.Theconfigurationsequence,whichaffectsrouting,i......