Scanner注意事项与报错(next()、nextInt()、nextline()等)

2023-10-30

首先介绍一个经典的问题:nextline和nextInt混用出现的问题,当前面有nextInt时,nextLine不会等待你输入字符串。如下:

如图,控制台还没有等我输入字符串就直接输出了num

因为你输入10的时候实际是按了回车,因此输入的实际上是10加上回车换行符,10被nextInt读取了,但是回车换行符被保留下来了。而nextLine的结束符就是回车换行符(本来正常操作应该是输入字符串的时候敲下字符串然后敲换行,nextLine看见换行符就截止工作了,输出了换行符前面的字符串),此时nextLine看到内存之中有一个换行符就结束工作了,因此不会进行接下来的任何操作。

nextInt方法根据分隔符(回车,空格等)只取出输入的流中分割的第一部分并解析成Int,然后把后面的字节传递下去。
所以,第二种情况键盘实际输入是“10+回车”,nextInt读出了“10”,并留下了“回车”,
接着netxLine读到了一个“回车”,这是字符串的结束判定符,因此直接结束。

nextInt和nextLine混用(整数和字符串混合输入的解决方法):用next和nextInt

  

那为啥替换成next就不会报错呢?因为next的结束符是空格和tab键,如下。前面输入整数的时候即使还留了换行符,但是next看到不会结束工作,因此可以发挥作用。

那又会有疑问,那next记录不完整啊,不可以记录含空格的完整数据 ,那咋办呢。网课老师说不需要解决,因为以后采集数据不会通过控制台键盘录入采集,而是通过网页。其实我也不是完全相信,鉴于目前还是小白,就不过分深究了。我稍微试了下。

而且不仅是不完整,当next输入有空格的时候还有出现一些问题。

1.当我输入的字符串有空格,此时报错,此时我debug发现大概就是nextInt接收到了j这个字符,因为前面next遇到它的结束符空格就录入结束了,剩下的j被nextInt遇到,因为不符合录入类型,故报错。那我把j替换成2还报错吗?试一下

 

2. 此时它不会等待我输入整数就直接结束了,但是!nextInt录入了2。因为换行符是nextInt的一个分隔符,他只会读取分隔符前面的有效字符。读取完成之后就结束了。所有有了上面的结果。

next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
.nextInt():
这个方法跟next()一直,只是规定了数据类型是Int。

.nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
————————————————
版权声明:本文为CSDN博主「万小猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40262372/article/details/119707423

因为此阶段是快速学习阶段,等掌握了基础之后,有时间再深究再补充,琢磨一下API啥的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scanner注意事项与报错(next()、nextInt()、nextline()等) 的相关文章

随机推荐

  • vue中不同路由共用同一个组件,缓存数据。不同路由第一次进入走加载,二次缓存

    背景 后端根据不同路由返回不同数据 使用一个组件去渲染页面 需求 一 每次新路由进入的同一个组件都要走生命周期 获取后端数据 二 第二次点击需要缓存数据 希望之前输入的数据还在 难点说明 1 由于vue设计时 同一个组件二次进入是不会再次走
  • Tableau 二、数据前处理、折线图、饼图

    二 数据前处理 折线图 饼图 1 数据前处理 导入 中国电影网电影 data xlsx 拆分 电影名 右击 电影名 选中该列 拆分 则会自动拆分 自动拆分针对数据有一定格式的 删除 电影名 拆分 电影名 拆分 将 电影名 拆分 1 右击 重
  • spreadjs学习总结(持续更新)

    前言 苦于spreadjs学习教程和案例非常少 于是自己慢慢学习 慢慢总结出来 便于复习与巩固 申请试用可以获取官方技术人员免费30天技术指导 学习常用链接 spreadjs官网 spreadjs示例 spreadjs学习视频 spread
  • Linux:Ubuntu上运行qt时报错Could not load the Qt platform plugin “xcb“ in ““ even though it was found.

    报错信息如下 Cannot load library root anaconda3 envs sifa plugins platforms libqxcb so libxcb render util so 0 cannot open sha
  • openwrt启动流程

    了解Openwrt系统的启动流程 1 1 系统介绍 任何系统的启动都是开发人员首要关注的问题 因为只有了解了系统的启动流程和启动机制 才能真正掌握一个系统 如果对系统的启动不熟悉的话 是不可能用好一个系统的 Openwrt系统也不例外 他的
  • 交叉验证(Cross-Validation)

    交叉验证 Cross Validation 目录 交叉验证 Cross Validation 一 基本方法 1 保留交叉验证 hand out cross validation 2 k折交叉验证 k fold cross validatio
  • 【android】ListView之BaseAdapter使用详解

    android中ListView是一个比较常用的控件 它用于方便的列表显示可见数据 当数据过多时 会出现滚动条 并且可以根据屏幕长度进行自适应显示 1 为什么使用BaseAdapter ListView需要设置数据适配 就是添加你需要显示的
  • BootStrap实现带有增删改查功能的表格(DEMO详解)

    前言 bootstrap的表格样式 有类似EasyUI的表格 也有卡片式表格 放到移动端显示 各有千秋 但是BootStrap自带的表格是没有操作列的 网上的资源不少 但是都是比较单一 零碎 JS CSS也经常给的不全 自己经过大概一个月左
  • 【Spring Data JPA】JPA常用注解

    文章目录 常用基本注解 Entity 指定该实体类被JPA管理 Table 指定该实体类对应哪张表 Id 单个主键 IdClass 联合主键 Column 表示实体类属性对应数据库表的哪一字段 列 OneToOne 联合主键代码示例 常用基
  • Dsp28335点亮LED灯(学习笔记)

    文章目录 一 前言 1 1 设计思路 1 2 工具 1 3 原理介绍 二 步骤 2 1 程序编写 三 验证 一 前言 1 1 设计思路 用DSP28335GPIO68管脚输出低电平 点亮LED灯 1 2 工具 1 普中科技开发板 TMS32
  • Python报UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position的解决办法

    with open input txt as f for line in f print line 按行读取文本文件时报错 UnicodeDecodeError gbk codec can t decode byte 0xad in pos
  • MYSQL 存储过程详解

    用了多年的mysql 基本上都是在写增删改查的SQL语句 对存储过程只是有所耳闻 一直没有认真的去了解 使用过 所以编写这篇文档 记录对存储过程的学习笔记 和 mysql函数编程的一些基础知识 目录 概念 创建存储过程 IN OUT INO
  • 用Python+PIL将目录下jpg图像批量转成pdf文件

    一 引言 最近单位有个事 需要将一堆图片文件先转成pdf文件 同事下了个windows下的图形软件 但要一个个转 几百个jpg文件 太过麻烦 因此想用Python批量来做 一查 图像处理库PIL库可以支持 一试 花了半个小时搞定 在此分享一
  • finclip小程序运行机制与微信小程序运行机制

    根据运行小程序的宿主应用环境不同 小程序也会有不同的启动机制 1 小程序启动 小程序会有两种情况 一种是冷启动 一种是热启动 冷启动 用户首次打开或小程序被宿主应用主动销毁后再次打开的情况 此时小程序需要重新加载启动 即冷启动 热启动 假如
  • openWRT系统删除文件出现 Read-only file system 错误

    是因为断电意外关机 再重启后系统文件变成了只读 我用下面办法解决了 ssh登录后执行命令 e2fsck y dev sda2 然后reboot一下就可以了 goodluck
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Notepad++的HEX-Editor插件

    安装HEX Editor既可以联网安装如下 也可以直接把HexEditor dll下载好了放到plugins插件文件夹里面 1 到网站下载Hex Editer工具 https sourceforge net projects npp plu
  • arduino uno r3 控制42不进电机+TB6600驱动

    1 接线图如下 2 arduino和TB6600链接 arduino TB6600 GND ENA 空 ENA GND DIR 5口 DIR GND PUL 6口 PUL 3 TB6600和42不进电机链接 TB6600 42不进电机 A
  • Spring系列学习之Spring Cloud GCP Google云平台消息传递及存储

    英文原文 https spring io projects spring cloud gcp 目录 概述 特性 入门 快速开始 学习 文档 示例 概述 Spring Cloud GCP项目旨在使Spring Framework成为Googl
  • Scanner注意事项与报错(next()、nextInt()、nextline()等)

    首先介绍一个经典的问题 nextline和nextInt混用出现的问题 当前面有nextInt时 nextLine不会等待你输入字符串 如下 如图 控制台还没有等我输入字符串就直接输出了num 因为你输入10的时候实际是按了回车 因此输入的