Scanner类的使用

【Shader】Unity批量更换Shader 在Unity开发中,因为渲染管线问题,经常会遇到需要大量更改shader的问题,本篇文章讲述批量更换Shader的工具。 阅读详情

一,用法

1,  我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

总结:要常使用hasNextLIne()方法,在涉及字符串的时候尤其要。

2,输入前对数据进行筛选。

  如果只需要输入 int 或 float ,double等类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:但是如果任何数据都可以,不需要过滤。

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
        int i = 0;
        float f = 0.0f;
        System.out.print("输入整数:");
        if (scan.hasNextInt()) {
            // 判断输入的是否是整数
            i = scan.nextInt();
            // 接收整数
            System.out.println("整数数据:" + i);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是整数!");
        }
        System.out.print("输入小数:");
        if (scan.hasNextFloat()) {
            // 判断输入的是否是小数
            f = scan.nextFloat();
            // 接收小数
            System.out.println("小数数据:" + f);
        } else {
            // 输入错误的信息
            System.out.println("输入的不是小数!");
        }
        scan.close();
    }
}

3,多行数据的输入。

以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
 
        double sum = 0;
        int m = 0;
 
        while (scan.hasNextDouble()) {
            double x = scan.nextDouble();
            m = m + 1;
            sum = sum + x;
        }
 
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值是" + (sum / m));
        scan.close();
    }
}

4,Scanner这个类虽然可以接收各种类型,但是对于日期型的数据却无法接收。

如果要想接收Date类型的数据,则只能通过字符串转型,但是在接收的时候依然可以使用Scanner类中提供的方法进行验证:

   验证:public String hasNext(Pattern pattern)

   接收:public String next(String pattern)

import java.util.* ;

import java.text.* ;

public class ScannerDemo04{

public static void main(String args[]){

Scanner scan = new Scanner(System.in) ; // 从键盘接收数据

String str = null ;

Date date = null ;

System.out.print("输入日期(yyyy-MM-dd):") ;

if(scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")){ // 判断

str = scan.next("^\\d{4}-\\d{2}-\\d{2}$") ; // 接收

try{

date = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;

}catch(Exception e){}

}else{

System.out.println("输入的日期格式错误!") ;

}

System.out.println(date) ;

}

};

4,使用Scanner直接读取文件的内容

文件内容

import java.util.* ;

import java.text.* ;

import java.io.* ;

public class ScannerDemo05{

public static void main(String args[]){

File f = new File("D:" + File.separator + "test.txt") ; // 指定操作文件

Scanner scan = null ;

try{

scan = new Scanner(f) ; // 从键盘接收数据

}catch(Exception e){}

StringBuffer str = new StringBuffer() ;

while(scan.hasNext()){

str.append(scan.next()).append('\n') ; // 取数据

}

System.out.println("文件内容为:" + str) ;

}

};


在使用Scanner读取文件的时候,要考虑到换行的功能。

总结:

1、掌握Scanner类的作用:方便的读取数据。

2、在读取操作的时候一定要注意分隔符的影响。

 

 

 

 

 

STM32H7 FMC驱动TFT-LCD原理与实战 TFT-LCD并行接口驱动是嵌入式人机交互的基础技术,其核心在于将显示控制器抽象为存储器映射设备,依托硬件时序控制器实现低开销、高确定性刷新。FMC(Flexible Memory Controller)作为STM32H7系列的关键外设,通过地址/数据总线复用、可配置读写时序及Bank分区机制,支持将ILI9341、ST7789等主流LCD控制器挂载为‘慢速异步存储器’,从而替代GPIO模拟8080时序或LTDC+DMA2D方案。该技术显著降低CPU占用率,提升帧率稳定性,适用于工业HMI、实时仪表盘等对响 阅读详情

相关推荐

minist手写数字的识别代码复现(pytorch 版本)

电脑系统:Windows 10语言环境:Python 3.8.18编译器:jupyter notebook深度学习环境:torch == 1.13.1+cu116显卡及显存: Tesla V100-PCIE-32GB卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种 具有局部连接、权重共享等特性的深层前馈神经网络. 目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的 前馈神经网络。

2202_75521293的博客 2616

Java 基础——Scanner 类

本文介绍了 Scanner 类相关的知识。

代码星辰的博客 3万+

SAP中MRP运行计划行超限问题的分析与解决

SAP中基于生产性物料的采购特点,通常会采用采购计划协议的方式进行采购。其具体的采购计划通常来自于成品计划独立需求,然后通过物料清单,经由MRP跑出。 在采购计划协议中的计划行中,存在一个计划行号,随着MRP在不断跑出新的计划行,该行号资源会消耗完。当计划行号消耗完后,MRP不会再跑出新的计划行。且在MD04或MD02中看不到类似提示信息。此时可以通过MD05来查看是否出现类似下图的提示信息。 ...

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 3842

java常用工具之Scanner类

Java 的 Scanner 类是一个方便在控制台扫描用户输入的工具类,虽然它也可以扫描文件内容,但我们通常更喜欢它扮演前面的角色,因为扫描文件可以通过文件流来完成。接下来,我们通过几个简单的示例讲一下 Scanner 类。

恒二哥的博客 8661

排队论在食堂窗口规划中的应用:M/M/S模型优化案例

本文通过食堂窗口规划的真实案例,详细阐述了如何运用排队论中的M/M/S模型量化服务效率。文章从问题拆解、数据采集、模型计算到成本效益分析,提供了完整的数学建模实战指南,帮助读者掌握利用最优化方法解决资源配置问题的核心流程与工具。

docker7nomad的博客 1083

Uibot RPA中级认证实战:手把手教你用流程创造者搞定客户数据迁移(附验证码容错技巧)

本文详细介绍了Uibot RPA中级认证实战中的客户数据迁移工程化解决方案,特别针对验证码容错技巧和动态表格处理等核心挑战。通过环境准备、登录模块设计、数据提取技术及容错体系的系统讲解,帮助RPA实施工程师掌握高效稳定的自动化流程开发方法,提升企业数据迁移效率。

weixin_30505225的博客 227

Java Scanner 类

Java Scanner 类是Java的一个内置类,它提供了一种简便的方式来从标准输入或者文件中读取基本类型和字符串。本文将会详细介绍Java Scanner类的作用以及在实际工作中的用途。

笔记 3536

Raspberry Pi Pico SDK开发-Timer-定时

RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 本实例将演示如何使用Timer的定时功能。

视觉与物联智能 2040

循环输入,输入类型错误不停止运行(while中Scanner出错不停止运行)

在学习java基础为了实现循环操作,让代码不断的分步执行,不免会使用scanner类来实现输入操作序号,所以在输入你的操作序号时的要求是整数,故在输入字符串,小数会进行报错。为了实现避免报错,不影响代码运行,会使用异常来进行捕捉并且给出提示,但是在运行异常时,try代码块中的scanner输入语句在输入类型错误后,则不会再执行,会直接跳过try中的scanner输入语句,反复执行catch中的代码,则会代码无法再次进行输入,导致程序反复执行,进入无法操作的死循环。

qq_59723461的博客 874

杰理SDK入门教程(六):自定义按键事件

这篇教程介绍了在杰理AC695N芯片上实现自定义按键功能的完整流程,包含三个核心步骤:首先在key_event_deal.h文件中添加按键枚举定义;然后在adkey_table.c配置按键映射表,按模式和行为类型设置按键值;最后在app_common.c的消息处理函数中添加自定义按键逻辑。教程强调需注意不同模式按键表的列定义差异,并提供了具体代码示例,最后指导完成编译测试验证。全文结构清晰,配有关键代码截图,适合开发者快速上手自定义按键功能开发。

qq_42014563的博客 1016

深入理解 DDR5 Bank Group 与并行调度机制

Bank Group架构和并行调度机制,是DDR5性能跃升的核心秘密!理解它们才能写出高效调度程序,设计出性能强劲又稳定的DDR5系统。🎯记住:Bank Group不是简单的分组,而是高速并行的“魔法钥匙”,巧用它,你的DDR5设计将爆发惊人性能!

weixin_43199439的博客 310

解决Java 中while(Scanner.hasNext())死循环问题

解决Java 中while(Scanner.hasNext())死循环问题 摘要:最近几天在用牛客刷题,遇到需要使用Scanner输入的问题。这类题有时候并不会有提到设置终止符来停止Scanner的录入。在网上翻看了不少的方法,发现没有适用的(我用的是 idea编辑器)。下面先把前人的经验说一下(虽然我用的时候不起作用) 链接1. 这个方法我试了一下,当不输入内容,按两次 Enter 键,系统并没有退出 import java.util.Scanner; /* * 按"Enter",读取每行输入的

lovely_code的博客 2974

动态SLAM中的YOLO与ORB-SLAM3融合:实时目标检测与动态点云滤除实战

本文介绍了如何结合YOLOv5目标检测与ORB-SLAM3视觉SLAM系统,实现动态环境下的目标检测与视觉SLAM任务。文章详细阐述了从源码下载、依赖安装(包括libtorch配置)、编译运行步骤(包括ROS环境和非ROS环境下的编译方法),到RGBD-TUM数据集准备与关联处理的全流程。同时针对常见错误提供了解决方案,如libtorch路径配置、ROS环境冲突等。最后展示了系统运行方法,并探讨了未来可能的优化方向,包括增强目标检测能力和改进动态环境下的地图构建。该集成系统为机器人智能导航和环境感知提供了有

LXY_LOVE36的博客 236

Scanner类

Scanner类 什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器。 引用类型(Scanner类)使用步骤 导包 使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。 格 式: import 包名.类名; import java.util.Scanner; Scanner 类定义在java.util 包中。 当使用的类不是定义在基本java.lang 包中时,一定要使用 import 指示字将相应的包加载进来。 创建对象(构造方

静以成学的博客 1088

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

(Java)Scanner 类

文章目录一、Scanner 类简介二、使用 Scanner 类输入数据1. 实现基本的数据输入2. 实现日期格式的数据输入3. 从文件中得到数据 一、Scanner 类简介 Scanner 类的常用方法: Scanner 类提供了一个可以接收 InputStream 类型的构造方法,这就表示只要是字节输入流的子类都可以通过 Scanner 类进行方便的读取 二、使用 Scanner 类输入数据 ...

南淮北安的博客 3942

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Scanner类的使用方法

今天来学习scanner类的使用方法: 主要作用-------接收用户输入的值 使用方法 1、首先需要构造一个Scanner类的对象,并且与标准输入流System.in关联 类型 变量名 = new 类型(); Scanner scanner = new Scanner(System.in); 2、调用Scanner类对象scanner的方法从输入流中获取你需要的输入 变量.功能名字(...

Daniel 3380

java中scanner类

java中scanner类

m0_53656722的博客 7295

java的scanner类什么时候用_关于Java中Scanner类使用的一些问题

今天在和基友讨论关于Scanner类是否可以放在其他类中的问题,整理如下,首先我们看第一个例子:packagetv.zhangjia.tv;importjava.util.Scanner;publicclassA{publicstaticvoidmain(String[]args){Bb=newB();b.print();}}classB{Scannerinput...

weixin_36076907的博客 1347

Java Scanner类的介绍及使用

什么是Scanner类 scanner的中文翻译是扫描仪。顾名思义,Scanner类可以生成一个解析基本类型和字符串的简单文本扫描仪。 Scanner类的简单使用步骤 1 查看类并导入类 //该类需要import导入后使用 java.util.Scanner: 2 查看构造方法 // 构造一个新的Scanner,它生成的值是从指定的输入流扫描的 public Scanner(InputStream source); 3 查看成员方法 // 将输入信息的下一个标记扫描为一个int值 public int

sc179的博客 3622

java中Scanner类的使用方法

1、Scanner类简介 Scanner类主要用于扫描用户从控制台输入的文本,即当用户需要输入数据时,调用java.util包中的Scanner类,Scanner类能获取用户所输入的数据。 2、如何使用Scanner类 导入Scanner包 import java.util.Scanner; 3、一组输入 ①用next接收 注意:1.一定要读取到有效字符后才可以结束输入。 2.对输入的有效字符之前所遇到的空白,会自动将其去除。 3.只有输入的有效字符后才将其后面输入的空白作为结束符。 ...

weixin_46972127的博客 1万+

类Scanner

什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器。Scanner类的功能:可以实现键盘输入数据,到程序当中。 引用类型的一般使用步骤: 1. 导包 import 包路径.类名称; 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。 只有java.lang包下的内容不需要导包,其他的包都需要import语句。 2. 创建 ...

weixin_30828379的博客 184

java Scanner类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 类的初始化: Scanner object=new Scanner(System.in); 下面简略介绍下Scanner类的方法: next():获取用户的输入,必须要获取到有效字符才会结束,以空白为结束符 nextLine():获取用户输入,可以获取空,以回车作为结束符 nextI...

反手一个bug的博客 2300
上一篇: Java集合框架
下一篇: 杂记一——数组集合的遍历(增强for循环的使用)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值