【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)

news2024/11/24 9:34:20

解决方法直达

问题描述

使用 Java 的 Scanner 类来读取数据的时候容易遇到的一个坑是 nextLine() 莫名其妙地就无法使用了。
具体表现为:好像 nextLine() 没执行就直接返回空字符串了。

例如

Scanner scanner = new Scanner(System.in);
System.out.println("input a number:");
System.out.println(scanner.nextDouble());
System.out.println("input a string:");
System.out.println(scanner.nextLine());

Eclipse Console 执行结果

问题分析

造成 nextLine() 返回空行(即 "\n")的原因是 nextDouble() 方法只会把数字给“吸收掉”(即 123,而你输入的内容是 123\n。于是剩下的 \n 就被 nextLine() 给拿走了。

(其他的 next数字 同理)

解决方案

1 next()

next()nextLine() 的区别是
next():读入下一个 token,即从第一个非空白字符开始,遇到任何一个空白字符就结束。也就是说会跳过所有空白字符,自然就解决了上面的字符。
nextLine():读入下一行字符串。

缺点:要输入的内容里不能有空白字符。
next() 方法效果

2 吸收多余空行

再前面加一行 scanner.nextLine(); 用于吸收掉多余的空行。

缺点:容易忘记加;程序复杂时搞不清到底加没加,加在哪了,容易误伤。

3 (推荐)parseDouble()

scanner.nextDouble() 改成 Double.parseDouble(scanner.nextLine())
即不要用 next数字 系列的方法。

缺点:啰嗦麻烦。
优点:不存在忘记吸收空行的问题。

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

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

相关文章

【three.js】简介和本地部署

跟着b站大佬学习three.js,让你实现3d前沿技术不是梦! 由于访问three.js官网是国外的网站,非常慢Three.js – JavaScript 3D Library 因此我们可以访问b站大佬在国内搭建好的本地three.js官网,大家访问如下链接即可,…

git项目删除业务代码、并清除所有提交记录,以此为基础创建出一个干净仓库、再另建一个远程代码库推上去

1、先把项目的.git文件夹删除,里面全是之前项目的提交记录 2、在本地项目地址启动git Bash Here后 执行命令 git remote add origin 远程仓库地址 注意后面接的是远程仓库地址 远程仓库要提前把代码块建好 3、如果出现报错:Updates were rejected because the remote conta…

论文阅读--On optimization methods for deep learning

深度学习的优化方法研究 论文信息:Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. …

JAVA NIO深入剖析

4.1 Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方…

【已解决】Python读取sql数据,报错:Not an executable object,解决方案

【已解决】Python读取sql数据,报错:Not an executable object,解决方案 1.报错内容: 通过Python连接sql,读取sql中数据,报错:Not an executable object。具体代码及报错内容见下: …

为什么mac上有的软件删除不掉?

对于Mac用户来说,软件卸载通常是一个相对简单的过程。然而,有时你可能会发现某些软件似乎“顽固不化”,即使按照常规方式尝试卸载,也依然存在于你的电脑上。这到底是为什么呢?本文将探讨这一问题的可能原因。 1.卸载失…

实用指南:如何解决企业组网中网络卡顿问题?

随着互联网的发展,企业逐步将办公应用系统部署在内网服务器或者上云了,导致很多日常工作都需要网络才能访问。员工在工作的时候网络不给力,卡顿半天也打不开,非常影响工作效率和心情。 在企业组网过程中,网络卡顿现象的…

解决mysql去掉字段空格:中间空格,左侧空格,右侧空格,两端空格,水平制表符(tab键或者\t)空格,换行键(\n)空格,回车键(Enter键)空格

1. 复现错误 今天,查看我禅道上的日志,发现有这个错误: 数据库查询处的字段,存在空格,那么,怎么解决这个问题呢? 2. 解决思路 首先打开控制台,查看所调用的接口。 通过接口找到对应…

线程的概念及使用

1.C11 Thread线程库的使用 本文详细介绍C11 线程库的基本使用,包括如何创建线程、启动线程、等待线程完成、如何分离线程。 创建线程 线程的概念及使用 线程:进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序…

再创佳绩!移远通信RG500U-EA 5G模组获得全球首个紫光展锐V510平台GCF 认证

近日,移远通信工规级5G模组RG500U-EA顺利通过GCF认证,成为全球首款通过该认证的基于紫光展锐V510平台的5G模组。 GCF认证是一种国际性的产品一致性认证,该认证的通过,表明移远通信RG500U-EA模组满足不同运营商的规范要求&#xff…

CUDA学习笔记1——核函数与线程

CUDA安装并配置环境后&#xff0c;使用VS新建工程时会出现对应选项&#xff1a; CUDA核函数调用 CUDA核函数必须用限定词 global 修饰&#xff0c;返回类型必须为void&#xff0c;二者次序随意。函数名与()之间用三括号<<<网格大小&#xff0c;线程块大小>>&…

Visual Studio 2019中的安全问题

最近&#xff0c;在使用Visual Studio 2019的时候遇到了一个很奇怪的问题&#xff0c;如下所示。 这里一直在说scanf函数不安全&#xff0c;导致报错&#xff0c;然后上网查了查相关资料&#xff0c;发现在代码中加那么一句就可以了&#xff0c;而且必须放在最前面。 #define …

网络安全:个人信息保护,企业信息安全,国家网络安全的重要性

在当前的数字化时代&#xff0c;无论是个人&#xff0c;企业&#xff0c;还是国家&#xff0c;都会面临严重的网络安全威胁。网络安全不仅涉及我们的日常生活&#xff0c;也涉及到社会的稳定和国家的安全。这就需要我们高度重视网络安全&#xff0c;强化个人信息保护&#xff0…

HRB系列 电源升压模块直流可调低压升高压输出DC/DC升压变换器

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

Quarto 入门教程 (3):代码框、图形、数据框设置

简介 本文是《手把手教你使用 Quarto 构建文档》第三期&#xff0c;前两期分别介绍了&#xff1a; 第一期 介绍了Quarto 构建文档的原理&#xff1b;可创建的文档类型&#xff1b;对应的参考资源分享。 第二期 介绍了如何使用 Quarto&#xff0c;并编译出文档&#xff08;PDF…

设备管理团队如何做好停机维护工作_基于PreMaint设备数字化平台

在现代工业生产中&#xff0c;设备的正常运行对于企业的生产效率和利润至关重要。而停机维护作为设备管理的重要环节&#xff0c;旨在确保设备的安全性、可靠性和性能稳定。本文将介绍停机维护的概念&#xff0c;讨论如何计划停机维护&#xff0c;并重点探讨如何通过PreMaint设…

Linux 部署项目

部署 Linux 部署项目1. 宝塔部署1.1 前端部署1.2 后端部署 2. docker 部署2.1 后端部署2.2 前端部署 3. 跨域问题3.1 Nginx 代理&#xff08;推荐&#xff09;3.2 修改后端服务3.3 添加 web 全局请求拦截器 4. 域名解析DNSPod添加域名 Linux 部署项目 1. 宝塔部署 准备工作&am…

Kafka消费者群组和负载均衡

前言 在大数据时代&#xff0c;消息处理成为众多企业关注的焦点。而Kafka作为一种高性能、分布式的消息系统&#xff0c;通过其消费者群组和负载均衡的特性&#xff0c;实现了高效的消息处理和可靠的数据传递。 消费者群组 Kafka的消费者群组是一种灵活而强大的机制&#xff…

Java进阶——Java深入学习的笔记汇总 JVM底层、多线程、类加载 ...

前言 spring作为主流的 Java Web 开发的开源框架&#xff0c;是Java 世界最为成功的框架&#xff0c;持续不断深入认识spring框架是Java程序员不变的追求&#xff1b;而spring的底层其实就是Java&#xff0c;因此&#xff0c;深入学习Spring和深入学习Java是硬币的正反面&…

Win10系统打开组策略编辑器的两种方法

组策略编辑器是Win10电脑中很实用的工具&#xff0c;它可以帮助用户管理和设置计算机的安全性、网络连接、软件安装等各种策略。但是&#xff0c;很多新手用户不知道打开Win10电脑中组策略编辑器的方法步骤&#xff0c;下面小编给大家介绍两种简单的方法&#xff0c;帮助打开快…