【Java基础】Scanner中next与nextLine区别

2023-11-02

Scanner概念

scanner可以用来获取用户的输入,八个基本数据类型除字符外都可以输入,另外输入字符串有两种方式next与nextLine。接下来介绍他们的区别。

1.next与nextLine的区别

1.1 区别一
  	    String st1 = scanner.nextLine();
        String st2 = scanner.next();

        System.out.println("nextLine方式输入:" + st1);
        System.out.println("next方式输入:" + st2);

从运行结果看出:nextLine方式输入的字符串可以含有空格,也就是说它是以回车作为输入的结束符。

next输入的字符串不能含有空格,它以空格、tab、回车作为输入的结束符。

1.2 区别二
  	    int num = scanner.nextInt(); // 8
        String st = scanner.nextLine(); // hello java

        System.out.println(num + "===========" + st); // 8 =======

在这里插入图片描述

可以看到,还没等我输入字符串,本次输入就自动结束了。显然没有达到我的期望。

结论:nextLine会读取到回车作为他的值。

如何解决这个问题:

1.就以nextLine来读取上一次输入的回车作为它的值。

   	    int num = scanner.nextInt(); 
        scanner.nextLine(); //读取回车
        String st = scanner.nextLine(); 
        System.out.println(num + "===========" + st);

可以看出问题解决。

多一行代码总感觉不爽,还有没有其他解决方案呢?

2.以next来读入字符串,前提必须是所输入的字符串不能包含空格。

	    int num = scanner.nextInt();
        String st = scanner.next();
        System.out.println(num + "====" + st);

可以看出问题也可以解决。

3.在业务允许的情况下,可以将字符串输入放到第一行,避免读入回车作为他的值。

        String st = scanner.nextLine(); //第一行输入
        int num = scanner.nextInt(); 
        System.out.println(num + "====" + st);

在这里插入图片描述
问题也可以解决。

总结next与nextLine区别

next nextLine
不能读入含有空格的字符串,以空格、Table、回车作为本次输入的结束符 可以读入空格、以回车作为结束符
不会读取回车作为它的值 会读取回车作为它的值
补充一种方法

可以通过把输入nextLine字符串当作一个方法封装起来,然后调用这个方法。


public class ScannerDemo {

	public static int getInt() {
		return new Scanner(System.in).nextInt();
	}
	
	public static String getString() {
		return new Scanner(System.in).nextLine();
	}
	
}

测试一下

	int x = ScannerDemo.getInt();
		String st =  ScannerDemo.getString();
		System.out.println(x);
		System.out.println(st);

在这里插入图片描述

可以看出nextLine读取回车的问题已经没有了。所以这种方法也是可行的。

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

【Java基础】Scanner中next与nextLine区别 的相关文章

  • Java IO流 缓冲流-BufferedInputStream、BufferedOutputStream

    首先抛出一个问题 有了InputStream为什么还要有BufferedInputStream BufferedInputStream和BufferedOutputStream这两个类分别是FilterInputStream和FilterO
  • 黑马程序员---从头开始,回忆JAVA基础之JAVA用十六进制表示浮点数的方法

    在二进制文件中 存储数据的格式为16进制 下面举例说明27 0f在二进制文件中怎么表示 float 共计32位 折合4字节 由最高到最低位分别是第31 30 29 0位 31位是符号位 1表示该数为负 0反之 30 23位 一共8位是指数位
  • Swagger3 注解使用(Open API 3.0)

    文章目录 前言 一 swagger 3 的使用 Swagger SpringFox 3 0 相关特性 SpringDoc 二 从 spring fox 迁移到 springdoc 三 使用 swagger3 注解代替 swagger2 的
  • JVM工具-jstack

    jstack 打印线程堆栈信息 支持支持本地java进程 core文件以及远程java进程 命令格式 jstack options pid jstack options executable core jstack options serv
  • mysql如何一秒插入10万条数据

    当我们需要批量插入或者更新记录时 可以采用Java的批量更新机制 该机制允许多条语句甚至一次性提交给数据库处理 通常情况下比一句一提交处理更有效率 jdbc处理批量提交有三个方法 需要注意的是 这三种方法都要和PreparedStateme
  • 接口如何实现多态

    抽象类是用来继承的 不能被实例化 抽象类里可以有成员变量 接口中没有 1 抽象类里的抽象方法 只有在子类实现了才能使用 2 抽象类里的普通方法 可被子类调用 3 接口里的方法 都被默认修饰为public abstract类型 4 接口里的变
  • 【java基础】 方法,实参和形参,方法的重载,签名,递归

    目录 方法概念及使用 实参和形参的关系 重要 方法的重载 方法签名 简单了解 递归 简单介绍 方法概念及使用 方法就是一个代码片段 类似于 C 语言中的 函数 作用 是能够模块化的组织代码 当代码规模比较复杂的时候 做到代码被重复使用 一份
  • javaSE进阶1之static用法

    JavaSE进阶 静态关键字 static static关键字的作用 成员变量分类 静态成员变量 实例成员变量 static修饰成员变量内存原理 static 修饰成员方法的基本用法 成员方法的分类 static修饰成员方法内存原理 sta
  • [透彻]为什么要前后端分离?

    前后端分离的意义 前后端分离 已成为互联网项目开发的业界标准使用方式 前后端分离 会为以后的大型分布式架构 弹性计算架构 微服务架构打下坚实的基础 核心思想 前端页面调用后端的restuful api接口 并使用json数据进行交互 服务器
  • 进制及进制转换详解。原码、反码、移码,补码区别介绍。(通俗易懂)

    目录 前言 一 十进制 n进制 进制转换详解 1 先说说什么是进制 2 二进制介绍 3 十进制 n进制 进制转换详解 重点 十进制 gt n进制 2 8 16 n进制 2 8 16 gt 十进制 非十进制间的互相转化 二 原码 反码 移码
  • 对接百度api的工具类:Base64Util,FileUtil,HttpUtil

    对接百度api的工具类 Base64Util FileUtil HttpUtil package com baidu ai aip utils Base64 工具类 public class Base64Util private stati
  • java 模拟库存管理系统

    本案例要求编写一个程序 模拟库存管理系统 该系统内容主要包括 商品入库 商品显示 和删除商品功能 此程序用手机举例 此管理系统分别为两个类Phone 和Test类 Phone类 确定四个变量 类 1 生成空参数构造方法 2 全部参数的构造方
  • AQS底层原理

    1 AQS能干嘛 是什么 能干嘛 加锁就会有阻塞 有阻塞就需要排队 实现排队必然需要有某种形式的队列来进行管理 是什么 废话 抽象的队列同步器 翻译一下 AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石 通过内置的
  • Java 泛型 T,E,K,V,?

    泛型带来的好处 在没有泛型的情况的下 通过对类型 Object 的引用来实现参数的 任意化 任意化 带来的缺点是要做显式的强制类型转换 而这种转换是要求开发者对实际参数类型可以预知的情况下进行的 对于强制类型转换错误的情况 编译器可能不提示
  • 求一个数组的最大值最小值及其下标

    求一个数组的最大值最小值及其下标 思路 假定一个数为最大值 如果有个数比假定的最大值还大 那么该数就为最大值 最小值同理 使用for循环 public class MaxMin public static void main String
  • Java对象的快速复制的几种方式

    浅拷贝 深度复制 BeanUtils copyProperties 对象的克隆是指创建一个新的对象 且新的对象的状态与原始对象的状态相同 当对克隆的新对象进行修改时 不会影响原始对象的状态 注释 clone 是object类的protect
  • java动态代理简单实例

    java动态代理简单实例 package hello import java lang reflect InvocationHandler import java lang reflect Method import java lang r
  • java基础之HashSet详解

    HashSet详解 HashSet是基于HashMap实现的一个单列存储的集合类 将所有的数据存在HashMap的key值中 而value全部使用一个Object对象存储 继承关系 public class HashSet
  • Java处理SSH-免密登录

    前提 需要测试主机之间能够免密 配置ssh请自行百度 jar包 旧版 com jcraft jsch 仅支持老版的密钥格式 旧版本 RSA
  • java连接oracle出现ORA-12505错误

    问题 sqlplus可以连接 但java连接报错 ORA 12505 ORA 12505 TNS listener does not currently know of SID given in connect descr 解析 原因 数据

随机推荐

  • 常见网络安全名词

    常见网络安全名词 木马 木马是指恶意代码伪装成正常的程序 当被运行时 会获取到整个系统的权限 比如往年的灰鸽子 蜜蜂大盗等 木马基本有四个特征 隐蔽性 欺骗性 顽固性和危害性 木马种类繁多 网页木马 网页木马是指恶意网页伪装成正常的页面 如
  • 学编程和乐高机器人的区别

    学编程和乐高机器人的区别 小孩的学习一直都是很多家长们十分关心和重视的一件事情 很多的家长在培养孩子的学习的时候 会给孩子选择一些能够提升孩子能力的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于学编程和乐高机器人的
  • 【Vuex】状态管理

    文章目录 优势 核心概念 State mapState辅助函数 Getter 通过属性访问 通过方法访问 mapGetters 辅助函数 Mutation 可以传参 对象风格的提交方式 Mutation 必须是同步函数 在组件中提交 Mut
  • springboot启动后,执行某个方法的实现方式

    1 注解 PostConstruct 直接在方式上面加注解 但是会影响服务提供 比如这个方法要执行五分钟 这五分钟之内是无法提供服务的 这个方法是在服务初始化后之前运行 所以 此方法运行不结束 服务就无法初始化 构造函数 Autowired
  • log日志配置简述

    近期进行log升级 简单配置了下几种常用日志 分别是log4j log4j2 logback 简单整理 不全不深 仅备后用 需求 将应用日志以控制台或文件的形式输出 一 log4j 1 引入jar包 下载并引入log4j的jar包 log4
  • 蓝桥杯真题javaB第三题:振兴中华

    第三题 振兴中华 题目描述 小明参加了学校的趣味运动会 其中的一个项目是 跳格子 地上画着一些格子 每个格子里写一个字 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时 先站在左上角的写着 从 字的格子里 可以横向或纵向跳到相邻的格子
  • .net core 在ubuntu系统下保存图片到本地

    这就是一个坑 using MemoryStream ms new MemoryStream imgBts using Image img Image FromStream ms img Save tempPic jpg 原来在 net Fr
  • 12关于FFmpeg的四种时基和时基相关函数的分析及其场景用法

    12关于FFmpeg的四种时基和时基相关函数的分析及其场景用法 前言 AVRational类型 是一个分数 例如 1 25 表示1除以25即1 25 时基 时间的单位 在ffmpeg下被描述成时基 时间戳 某个时刻的时间 1 FFmpeg的
  • vs更换本地git账号

    有人认为vs中用的git账号是哪个无所谓 其实不然 git账号不同 访问的权限就不一样 那么如果想跟换git账号该怎么做呢 win7 控制面板 gt 用户帐户和家庭安全 gt 凭据管理器 编辑普通凭据中的git账号或者直接删除 然后重启vs
  • 响应式布局 与 Bootstrap

    一 响应式布局 1 什么是响应式布局 使用媒体查询针对不同宽度的设备进行布局和样式设置 从而实现适配不同设备的目的 2 响应式布局的容器 响应式需要一个父级做为布局容器 来配合子级元素来实现变化效果 原理就是在不同屏幕下 通过媒体查询来改变
  • configure移植技巧,绝对干货

    一 环境 主机 ubuntu 开发板 arm linux 二 configure分析 build host target介绍 build为主机环境 如ubuntu redhat等等 执行gcc v命令可以查看到Target变量 build
  • 【STM32+cubemx】0015 HAL库开发:内部flash读写

    本节我们来学习stm32内部flash的读写 在某些应用中 我们需要保存少量掉电仍然不丢失的数据 而在电路板上额外增加一块eeprom或者flash又太浪费硬件资源 这时我们就可以把这些数据保存在stm32内部的flash里 1 stm32
  • debian11 安装 postgress 数据库 -- chatGPT

    问 debian 安装 postgress 数据库 gpt 要在Debian上安装PostgreSQL数据库 您可以按照以下步骤进行操作 1 打开终端 您可以通过点击 应用程序 菜单 然后在 系统工具 或 终端 下找到终端应用程序 2 使用
  • 【100天精通Python】Day43:Python网络爬虫开发_爬虫基础(urlib库、Beautiful Soup库、使用代理+实战代码)

    目录 1 urlib 库 2 Beautiful Soup库 3 使用代理 3 1 代理种类 HTTP HTTPS 和 SOCKS5 3 2 使用 urllib 和 requests 库使用代理
  • 推荐一波Git学习资料

    关于Git的用法我们已经写七篇文章 介绍了Git的不少用法 这些足以应付工作中90 的需求了 剩下的10 就需要小伙伴们在工作中自己慢慢总结了 我这里再给小伙伴们推荐一点Git学习资料 为我们的Git系列画上一个句号 书 推荐两本个人觉得很
  • 2018第八届至2022年第十三届蓝桥杯单片机开放与设计省赛客观题及简解整理

    前言 由于本人马上要参加第十四届蓝桥杯单片机设计与开发的省赛了 在对客观题复习两轮后 发现效率是比较低的 因此整理了2018至2022年的省赛客观题 将大概的考点划分三部分 这样可以更加系统的复习其内容 现在把整理的这份内容分享给各位同学
  • 微信小程序的this.setData()方法更新二级属性数据

    在用this setData 更新数据时 如果要更新的数据如下 data person name xiaoming occupation front end engineer 要把person name更新为 xiaogang 我们如果通过
  • ElementUI 之 el-tabs添加自定义按钮

  • oauth2 jwt token 返回accessToken对象中携带用户字段信息

    oauth2 源码中用户信息只返回用户名称 现有需求要求返回userId 只能重写某些方法 server端和client端都要修改 方法一 结果 userId 封装在token中 需要解析access token才能看到 但是经测试发现 使
  • 【Java基础】Scanner中next与nextLine区别

    Scanner概念 scanner可以用来获取用户的输入 八个基本数据类型除字符外都可以输入 另外输入字符串有两种方式next与nextLine 接下来介绍他们的区别 1 next与nextLine的区别 1 1 区别一 String st