Scanner中next()、nextInt()、nextLine()、hasNext()、hasNextInt()的使用方法及注意事项

news2024/11/25 2:54:26

目录

1、next()、nextInt()、nextLine()的使用方法及区分

2、循环时如何使用hasNext方法

3、用hasNextInt()作为判断下一个输入是否为数字需要配合next()方法使用


1、next()、nextInt()、nextLine()的使用方法及区分

三者简单定义

next():此方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,遇到第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。如下例:

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("读入一个字符串:");
        String s = sc.next();
        System.out.println(s);
    }

 结果:


nextInt():此方法只读取数值,不会读取空格和换行符,当我们用此方法读取后,再用nextLine()方法读取,会读取到剩余的空格或换行符,如下例:(为什么读入字符串下面,还会输出一个2呢?如果有大佬看到,请不吝赐教!)

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("读入数字:");
        int a = sc.nextInt();
        System.out.println(a);
        System.out.println("读入字符串:");
        String s = sc.nextLine();
        System.out.println(a);
    }

结果:


nextLine():此方法会扫描到一行内容并作为一个字符串而被获取到,如果要读取带有空格的一串字符串,需要用此方法,如下例:

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("读入第一个字符串:");
        String s  = sc.next();
        System.out.println(s);
        System.out.println("读入第二个字符串:");
        s = sc.nextLine();
        System.out.println(s);
    }

 结果:

解决方法:只需在sc.next()后面加上一个sc.nextLine()即可消除该回车,如下:

 结果:


例:当你输入一串带空格的字符串,敲下回车后,若最开始碰到sc.next(),sc.next()只会读取第一个不是空格的单词。例如下例,当sc.next读完hello后,读取的cursor是在空格前,导致读取的nextLine长度是6。


2、循环时如何使用hasNext方法

遇到hasNext()时,Scanner会阻塞,等待用户输入,等你输入后返回true,若没有,会一直阻塞等待用户输入

如下代码,你需要先先输入,才会进入while循环,才会显示“请输入”

当我们想退出用hasNext做条件的while循环时,方法一是在控制台手动输入Ctrl+Z;方法二while(!sc.hasNext("#"))约定当一行输入#时退出,如下:


3、用hasNextInt()作为判断下一个输入是否为数字需要配合next()方法使用

hasNextInt()函数大体意思表示scanner当前的标记的输入是否为int,并不会自动的移动标记。

例如实现一个判断当前输入是否为数字,不是的话提示请输入数字,因为该函数不会自动的移动标记,所以就会死循环输出“请输入数字”,如下代码

要实现hasNextInt()的读取的标记位置的改变,可以用sc.next()移动

解决代码:


该笔记参考自博主:weixin_41262453

仅供自己学习使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过 Java 操作 redis -- 基本通用命令

目录 使用 String 类型的 get 和 set 方法 使用通用命令 exists ,del 使用通用命令 keys 使用通用命令 expire,ttl 使用通用命令 type 要想通过 Java 操作 redis,首先要连接上 redis 服务器,推荐看通过 Java 操作 redis -- 连接 redis 关…

裸辞、裁员、老板跑路、被迫失业,未来是「超级个体」的时代

本期我们邀请的程序员是张立强,裸辞、裁员、老板跑路、被迫失业,管理层利益争夺,职业转型,工作五年,攒出了十年经验。程序员如何寻找自己的第二曲线,不妨听听立强的看法。 裸辞失业 大家好,我…

redis 使用记录

redis 使用记录 下载运行配置文件启动 参考 下载 github: Redis for Windows 或者从百度网盘下载 Redis version 3.2.100 链接: https://pan.baidu.com/s/1kxNOuZFunvVhVy1cfQzCDA?pwdpibh 运行 双击运行 运行效果 如果出错:查看是否项目路径是否包含中文 配…

计算机视觉——OpenCV Otsu阈值法原理及实现

算法简介 Otsu阈值法,也被称为大津算法,是一种在图像处理中广泛使用的自动阈值分割技术。这种方法由日本学者大津展之于1979年提出,旨在根据图像的灰度直方图来自动选择最佳全局阈值。Otsu阈值法的核心思想是最小化类内方差或最大化类间方差…

京东淘宝1688商品采集商品数据抓取API

item_get-获得淘宝商品详情 item_search 关键字搜索商品 公共参数 请求地址: taobao/item_search 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中&a…

Azure AKS日志查询KQL表达式

背景需求 Azure(Global) AKS集群中,需要查询部署服务的历史日志,例如:我部署了服务A,但服务A的上一个版本Pod已经被杀掉由于版本的更新迭代,而我在命令行中只能看到当前版本的pod日志&#xff…

c++匿名比较函数参数顺序逻辑

在使用lower_bound和upper_bound时,想自定义比较函数,在这个过程中出现了参数定义顺序导致的错误问题,于是查找学习了下自定义比较函数需要符合的规则。 目录 1 lower_bound和upper_bound函数 1.1 lower_bound 1.2 upper_bound 2 问题产…

服务器关机前未退出xampp导出MySQL无法启动

背景解决 五一放假,服务器关机了,但是关机前没有正常关闭数据库服务,导致数据库无法启动! 查看错误日志如下 从报错信息可以看出是MySQL这个服务相关文件出现问题了,解决思路:重新安装xampp 重新安装xam…

OpenHarmony实战开发-管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果,决定是否赋予前端页面权限。获取设备位置,需要开发者配置ohos.permission.LOCATION,ohos.permission.APPROXIMATE…

react引入阿里矢量库图标

react引入阿里矢量库图标 登录阿里矢量库,将项目所需的图标放一起 react项目中新建文件夹MyIcon.js 3. 在页面中引入,其中type为图标名称

JSON++介绍

1.简介 JSON 是一个轻量级的 JSON 解析库,它是 JSON(JavaScript Object Notation)的一个超集。整个代码由一个单独的头文件json.hpp组成,没有库,没有子项目,没有依赖项,没有复杂的构建系统&…

【RabbitMQ 三】Java客户端开发

本文引用的代码源自《RabbitMQ实战指南》 关键的类和接口主要有Channel、Connection、ConnectionFactory、Consumer等,它们主要的作用如下: Channel:实现AMQP协议层的操作Connection:开启信道(Channel)、注…

黑马点评项目总结

登录 基于session登录 短信验证码登录 配置登录拦截器 向 Spring MVC 框架中添加拦截器,LoginInterceptor 是一个自定义的拦截器,用于拦截用户的登录请求。 excludePathPatterns这一句是设置拦截器需要放行的请求路径列表。 "/user/code", …

ROS机械臂中Movelt!

Movelt!简介 一个易于集成使用的集成化开发平台 由一系列移动操作的功能包组成 1、运动规划 2、操作控制 3、3D感知 4、运动学 5、控制与导航算法 ....... 提供友好的GUI 可应用于工业、商业、研发和其他领域 ROS社区中使用度排名前三的功能包 Movelt!三大核心功能 …

Kafka应用Demo:按主题订阅消费消息

安装环境 Kafka安装可参考官方网站的指导(https://kafka.apache.org/quickstart), 按步骤解压压缩包,修改配置。然后再启动zookeeper和kafka-server即可。 需要注意的一点:如果是在VMware虚拟机上启动的kafka, 需要修改一下server.properties配置文件&am…

JavaEE技术之MySql高级-搭建主从复制(主从同步原理、一主多从配置)

文章目录 MySQL主从同步1、MySQL主从同步原理2、一主多从配置2.1、准备主服务器2.2、准备从服务器2.3、启动主从同步2.4、实现主从同步2.5、停止和重置2.6、常见问题问题1问题2 MySQL主从同步 1、MySQL主从同步原理 基本原理: slave会从master读取binlog来进行数据…

python中如何遍历字典

1. 遍历字典的键key ① >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6)} >>> for key in d:print(str(key):str(d[key])) list:[1, 2, 3] 1:123 111:python3 tuple:(4, 5, 6) ② >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6…

书生·浦语大模型实战营之手把手带你评测 Llama 3 能力(OpenCompass 版)

书生浦语大模型实战营之手把手带你评测 Llama 3 能力(OpenCompass 版) 环境配置 conda create -n llama3 python3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -y conda activate llama3conda install git git-lfs install✨下载 Llama3…