当前位置: 首页 > news >正文

ACM模式下Java读取控制台输入注意事项及输出规范化

背景

在ACM模式下。需要我们去接受输入的参数,一般是使用Scanner去读取控制台输入的参数System.in。
不熟悉的情况下,很容易出现问题,针对常见的问题做一个总结。

一、nextXxx

如next,nextInt,nextFloat,这些方法把(空格、制表符、换行符)当做分隔符。
这也就意味着,读取到的数据里面永远不会出现这些字符。
next:读取字符串
nextInt:读取整形
nextFloat:读取浮点数
在读取数据的时候,需要先读取到所需要的数据,一直到下一个字符是(空格、制表符或换行符),就会结束读取,前面读取到的就作为一个结果返回。光标就停在碰到的(空格、制表符或换行符)前面。
如果开头就是分隔符,会直接跳过,一直到读取到可读取的字符才算本次读取数据的开始
在结合nextIine方法使用的时候需要非常注意。

比如,空格分隔

输入:
1 2 3 4
一直都是调用nextInt读取数据,则第一个读取到的是1,第二个读取到的是2,第三个读取到的是3.

	public static void main(String[] args) {Scanner sc=new Scanner(System.in);int i = sc.nextInt();int s = sc.nextInt();System.out.println(i);System.out.println(s);}

在这里插入图片描述

输入:
1 2 3 4
比如先调用nextInt,这时候系统会读取1,然后判断到下一个字符是空格就停,光标停在1的后面,1和2中间空格的前面。如果这个时候调用nextLine来读取数据,则会把1和2中间的空格也读取到,读取到的数据就是空格2空格3空格4,如下:

	public static void main(String[] args) {Scanner sc=new Scanner(System.in);int i = sc.nextInt();String s = sc.nextLine();System.out.println(i);System.out.println(s);}

在这里插入图片描述

换行符分隔(重点)

输入如下:
2
4 1 2 3 4
比如先调用nextInt,然后再调用nextLine。那么调用nextLine会返回一个空字符串,因为2后面就是空,而nextLine读取的就是当前光标到当前行结束。如下图,
在这里插入图片描述

二、nextLine

这个命令只有判断到换行符才会结束读取数据,也就是说,读取的数据里面可以包括空格。
该命令会读取整行数据,具体是读取当前光标所在位置一直到遇到换行符结束,需要注意的是,使用nextLine会直接读取完这一行,直到遇到换行符,就将光标切换到下一行。
也就是是不存在遇到了换行符,光标却还在当前行的情况。

区别

nextLine方法和上面的各种方法分隔符不同。
还有一个非常重要的区别,上面的各种命令都不会有读取到空字符串的情况,而nextLine存在读取到空字符串的情况。

判断控制台输入是否还有数据

有时候,控制台输入的参数数量并不是固定的,这个时候就需要判断是否还有下一个参数以及参数的数据类型。
如:scanner.hasNext,scanner.hasNextInt等。
如输入:
a
调用hasNextInt方法,系统会判断第一个参数是否是整型,第一个参数是a,不是整型,返回false;而如果调用的是hasNext,系统会判断第一个参数存在,返回true。
无论调用hasNext还是hasNextInt方法,在遇到后续没有参数的情况下都会返回false。

数据类型之间是可以隐式转换的,比如输入一个整型,读取的时候使用hasNextFloat来判断也会返回true。
但是存在小数的数据是无法强转整型的,输入浮点数,调用hasNextInt返回false。比如输入1.0,不会被识别成整型1

三、输出规范化

浮点数上下取整

Math.ceil:上取整
Math.floor:下取整
浮点数数据设置有效小数位数

格式化打印

可以使用String.format(“”,“”)实现占位符式格式化输出
第一个参数就是模板,利用一些特殊标识作为占位符,右侧的不定参数和第一个参数里的占位符一一对应。
字符串占位符刚好对应String的s开头,浮点和字符也都是这样。需要特殊记忆的就十进制整形%d和十六进制整形%x。

占位符含义
%s字符串占位符
%d十进制占位符
%f浮点数占位符
%x十六进制占位符,输入的数字会被识别为十进制并将其转化成十六进制进行输出
%c字符占位符,和字符串不能混,字符串是双引号,字符是单引号

相关文章:

ACM模式下Java读取控制台输入注意事项及输出规范化

背景 在ACM模式下。需要我们去接受输入的参数,一般是使用Scanner去读取控制台输入的参数System.in。 不熟悉的情况下,很容易出现问题,针对常见的问题做一个总结。 一、nextXxx 如next,nextInt,nextFloat&#xff0c…...

面试题整理 2

总结了本次面试遇到的值得整理记录的面试题。 目录 变量赋值判断 变量判断 Foreach使用 Mysql优化策略 合理的索引设计 查询优化 数据表结构设计 配置优化 合理使用事务 定期维护数据库 使用缓存 监控与性能分析 Redis主从复制 介绍 配置 示例 Redis 数据类型…...

华为自研仓颉编程语言官网上线 首个公测版本开放下载

仓颉编程语言官网正式公开上线,同时首个公测版本开放下载。本次仓颉编程语言官网上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块,可供开发和学习和体验。 据悉,仓颉编程语言是在今年6月的华为开发者大会上正式公布&…...

NVR监测软件/设备EasyNVR多品牌NVR管理工具/设备对城市安全有哪些具体益处?

在智慧城市的建设中,各种先进的技术系统正发挥着越来越重要的作用。其中,NVR监测软件/设备EasyNVR作为一种高效的视频边缘计算网关,不仅能够实现视频数据的采集、编码和存储,还能与其他智慧城市系统进行深度集成,共同推…...

MFC工控项目实例二十八模拟量信号每秒采集100次

用两个多媒体定时器,一个定时0.1秒计时,另一个定时0.01秒用来对模拟量信号采集每秒100次。 1、在SEAL_PRESSUREDlg.h中添加代码 class CSEAL_PRESSUREDlg : public CDialo { public:CSEAL_PRESSUREDlg(CWnd* pParent NULL); // standard constructor&a…...

安装scrcpy-client模块av模块异常,环境问题解决方案

背景 使用 pip install scrcpy-client命令出现以下报错 performance hint: av\logging.pyx:232:5: Exception check on log_callback will always require the GIL to be acquired. Possible solutions: 1. Declare log_callback as noexcept if you control the definition …...

硅谷甄选(11)角色管理

角色管理模块 10.1 角色管理模块静态搭建 还是熟悉的组件&#xff1a;el-card、el-table 、el-pagination、el-form <template><el-card><el-form :inline"true" class"form"><el-form-item label"职位搜索"><el-…...

C语言结构体 变量对齐原理

以32位Linux为例&#xff0c;默认对齐值是4. 对齐原则通常有以下几种&#xff1a; 第一个成员在与结构体变量偏移量为0的地址处。其他成员变量要对齐到某个数字&#xff08;对齐参数&#xff09;的整数倍的地址上。结构体总大小为最大对齐参数的整数倍。嵌套结构体要对齐到…...

【oracle】正则表达式

文章目录 1.介绍1.1 什么是正则表达式1.2 什么是Oracle正则表达式 2. Oracle正则表达式的基础知识2.1 常用的元字符2.2 常用的转义序列2.3 常用的量词 3. Oracle正则表达式的函数3.1 REGEXP_LIKE3.2 REGEXP_SUBSTR3.3 REGEXP_REPLACE3.4 REGEXP_INSTR3.5 REGEXP_COUNT 4. Oracl…...

如何找到网上爆款内容,快速复制扩大品牌声量

社媒内容爆款复制是现代营销中的一个重要策略&#xff0c;它对于提升品牌声量、曝光度和知名度具有显著效果。 首先什么是爆款&#xff1f; 爆款内容指的是在社交媒体或其他在线平台上迅速获得大量关注、分享和讨论的内容。 准确、及时找到这部分品牌相关的爆款内容&#xf…...

补齐:相交链表:扣160

梦重新开始的地方 – 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。图示两个链表在节点 c1 开始相交&#xff1a; 示例&#xff1a; 何解&#xff1f; 暴力&…...

Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…...

NET Core的AOP实施方法1 DispatchProxy

NET Core的AOP实施方法1 DispatchProxy NET Framework的AOP实施方法1 ContextBoundObject NET Framework的AOP实施方法2 RealProxy 源码见Github DispatchProxy NET Core DispatchProxy 是一个在 .NET 框架中引入的概念&#xff0c;特别是在 C# 语言中。它是一种特殊类型的代…...

AIGC生成式人工智能——泼天的富贵(三)

人工智能作为第四次工业革命的标志性技术&#xff0c;正在深刻地改变着全球经济、社会结构和人类生活方式。 今天的人工智能&#xff0c;就像当年的房地产经济&#xff0c;未来至少会有十年的红利期。 一、人工智能&#xff0c;给我带来了第二桶金 你永远赚不到你认知以外的…...

GetX的一些高级API

目录 前言 一、一些常用的API 二、局部状态组件 1.可选的全局设置和手动配置 2.局部状态组件 1.ValueBuilder 1.特点 2.基本用法 2.ObxValue 1.特点 2.基本用法 前言 这篇文章主要讲解GetX的一些高级API和一些有用的小组件。 一、一些常用的API GetX提供了一些高级…...

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…...

刘艳兵-DBA011-应用使用Oracle数据库,必须启动哪些服务?

应用使用Oracle数据库&#xff0c;必须启动哪些服务&#xff08; &#xff09; A OracleServiceSID B OracleJobSchedulerSID C OracleMTSRecoveryService D OracleHOME_NAMETNSListener 答&#xff1a; A OracleServiceSID D OracleHOME_NAMETNSListener…...

注释多行代码的vim插件

编写vim 插件代码 add_comments.vim function! AddComment()let l:comment #if &filetype cpplet l:comment //elseif &filetype clet l:comment //endiflet [l:start, l:end][ line("<"), line(">") ]let l:commented_lines []for …...

Docker 安装HomeAssistant智能家居系统

HomeAssistant 介绍 简介 Home Assistant是一个自由开源的智能家居自动化平台&#xff0c;它可以控制并监测各种智能家居设备、传感器和其他物联网设备。Home Assistant可以运行在树莓派、NVIDIA Jetson Nano等低功耗设备上&#xff0c;使用户可以快速搭建自己的智能家居系统。…...

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…...

不止于点灯:用STM32F103和JDY-23蓝牙,打造你的第一个智能家居原型(附OLED状态显示)

从原型到产品&#xff1a;基于STM32F103与JDY-23的智能家居开发实战 在创客圈里&#xff0c;用单片机控制LED灯可能是最入门的实验之一。但如何将一个简单的点灯Demo升级为具备产品思维的原型系统&#xff1f;这正是本文要探讨的核心。我们将以STM32F103C8T6为主控&#xff0c;…...

自然语言处理进阶:用BERT实现文本相似度计算

在软件测试领域&#xff0c;文本相似度计算是一项极具实用价值的技术。它能助力测试人员高效完成重复用例排查、智能测试用例生成、用户反馈聚类等任务&#xff0c;大幅提升测试工作的效率与精准度。传统的文本相似度计算方法&#xff0c;如基于词频的TF-IDF、基于词向量的Word…...

【双AI论文写作】基于claude code、codex双AI协同论文写作撰写与质量校准:从“数据分析→论文初稿→交叉审稿“全流程

AI科研新范式不是让模型替你写论文&#xff0c;而是把论文变成一条可追踪、可审稿、可迭代的科研生产线——数据→写作依据文件→AI初稿→独立AI压测→逐轮提分→投稿包&#xff0c;全程文件可复查、责任在人。 【AI写论文的新范式&论文总体结构】&#xff1a; 科研新范式…...

毕业设计:基于springboot的林业产品推荐系统(源码)

4 系统设计当前&#xff0c;系统的类型有很多&#xff0c;从系统呈现的内容来看&#xff0c;系统的类型有社交类&#xff0c;有商业类&#xff0c;有政府类&#xff0c;有新闻类等。那么&#xff0c;在众多系统类型中&#xff0c;先明确将要设计的系统的类型才是系统设计的首要…...

STM32F4/F7上跑AI手写识别:从CUBEMX配置到串口通信的完整避坑指南

STM32F4/F7实战AI手写识别&#xff1a;从模型部署到数据处理的工程化解决方案 在嵌入式设备上部署神经网络进行手写识别&#xff0c;正逐渐从实验室走向工业现场。STM32F4/F7系列凭借其平衡的性能与功耗&#xff0c;成为边缘AI应用的理想选择。本文将深入探讨从模型准备到实际部…...

工厂考勤数据分散怎么破?实在Agent助力企业数字化转型实现非侵入式数据整合

摘要&#xff1a; 我是企业架构师老王。在2026年的今天&#xff0c;尽管智能制造已进入深水区&#xff0c;但“工厂考勤数据分散、打卡请假加班数据无法自动整合”依然是困扰无数中大型制造企业的“顽疾”。传统的API集成方案在面对老旧系统和复杂的异构环境时&#xff0c;往往…...

大模型注意力机制深度解析:从Dot-Product到Flash Attention的演进之路

引言如果让你用一句话概括过去七年人工智能领域最重要的技术突破&#xff0c;答案几乎毫无悬念——注意力机制&#xff08;Attention Mechanism&#xff09; 。2017年&#xff0c;Google团队在论文《Attention Is All You Need》中首次提出Transformer架构&#xff0c;彻底摒弃…...

【Web安全】JWT常见安全漏洞总结

文章目录前言1. JWT基础与漏洞概述2. JWT核心漏洞解析2.1 未校验签名2.1.1 漏洞原理2.1.2 利用方式2.1.3 实战脚本2.2 算法篡改漏洞2.2.1 漏洞原理2.2.2 核心说明2.2.3 攻击流程2.3 弱密钥漏洞2.3.1 漏洞原理2.3.2 利用方式2.4 垂直越权2.4.1 漏洞原理2.4.2 利用流程2.5 KID字段…...

CuteTranslation:Linux系统上的专业级屏幕取词翻译解决方案

CuteTranslation&#xff1a;Linux系统上的专业级屏幕取词翻译解决方案 【免费下载链接】CuteTranslation Linux屏幕取词翻译软件 项目地址: https://gitcode.com/gh_mirrors/cu/CuteTranslation CuteTranslation是一款基于Qt框架和X11系统开发的Linux屏幕取词翻译软件&…...

RK3588 LGA核心板:高性能嵌入式开发的模块化解决方案

1. 项目概述&#xff1a;当旗舰SoC遇见极致封装最近在嵌入式圈子里&#xff0c;一个“小而强”的组合引起了我的注意&#xff1a;瑞芯微的旗舰级SoC RK3588&#xff0c;被塞进了一个极其紧凑的LGA封装里&#xff0c;做成了名为SOM-3588-LGA的核心板&#xff0c;并且已经现货发售…...