java.util.Scanner在JDK1.5之后引入,Scanner类是一个专门用来进行输入流处理的的程序类。在此之前,对于输入流的处理一开始使用InputStream,然后出现了BufferedReader类用来解决其存在的一些不足之处,但是BufferedReader类默认的换行模式成了最大的缺点。最后被Scanner类取代。

Scanner类是一个简单的文本扫描器,这个类的最大优点首先是可以更加方便的处理各种数据类型,其次我们也可以使用正则表达式来对输入流数据进行更好的处理。

Scanner分隔符模式默认情况下匹配空格,我们可以使用next()方法将得到的数据转换成不同类型的值。接下来,我们需要了解一下这个类中主要的几个方法。

1:public boolean hasNextXXX():判断是否有指定类型数据,如果没有指定类型则为String

2:public XXX nextXXX():取得指定类型的数据,如果没有指定类型则为String

3:public Scanner useDelimiter(Pattren pattern):自定义分隔符

Scanner类从本质上讲是一个文本扫描器,最实用的地方就是获取控制台输入。如果没有Scanner,想要获取控制台输入,是一件很麻烦的事情。在介绍如何使用Scanner之前,我们先来看一下它的构造方法。

从构造方法我们可以看出Scanner确实是一个很好用的文本扫描器,下面我来举例一下。

        Scanner scanner = new Scanner(System.in);String Message = null;if(scanner.hasNext()){Message = scanner.next();System.out.println(Message);}scanner.close();

我们先来看一下结果:

我输入的是:12345_456。但是Message存储的只有“12345”。这里要总结一个知识点:nextXXX()读取相应数据类型的值的时候,默认以空格作为分割符来分割文本。但是我们是可以指定新的分隔符的。

除此之外,因为Scanner的构造方法多样,我们可以用很多种方式获取到Scanner的对象,所以我们就可以轻易的扫描并按照需求分割文件已达到我们想要的结果。

Scanner也可以使用正则表达式对文本进行扫描与区分,我举个例子

        Scanner scanner = new Scanner(System.in);String Message = null;if(scanner.hasNext("\\d{3}-\\d{3}-\\d{3}")){Message = scanner.next();System.out.println(Message);}else{System.out.println("输入错误,正确格式为:xxx-xxx-xxx");}scanner.close();

最后介绍的是使用Scanner对文件进行读取。

        Scanner scanner = new Scanner(new FileInputStream(new File("C:\\Users\\Lenovo\\Desktop\\练习.txt")));scanner.useDelimiter("\r\n");//将分隔符修改成换行符String Message = null;while(scanner.hasNext()){Message = scanner.next();System.out.println(Message);}scanner.close();

因为分隔符修改成了换行符,所以完整的读取出了文件内的所有信息。

有关Scanner的总结就到这里。

Scanner文本扫描器相关推荐

  1. Scanner类中的next()和nextLine()方法

    当我们从键盘输入时,通常会使用Scanner文本扫描器,当输入需要判断空格,tab键等无效字符时,next和nextLine()有不同的效果. next()一定要读取到有效字符后才可以结束输入,对输入 ...

  2. Java网页数据采集器[下篇-数据查询]【转载】

    本期概述 上一期我们学习了如何将html采集到的数据存储到MySql数据库中,这期我们来学习下如何在存储的数据中查询我们实际想看到的数据. 数据采集页面 2011-2012赛季英超球队战绩 如果是初学 ...

  3. java+@api_java 常用API

    Arrays实用功能public class ArraysFunc { public static void main(String[] args) { int[] i = new int[7]; i ...

  4. 第五周总结11-19

    11-14 1.常用类之Object 1)public int hashCode():获取对象的hash码值--->支持散列表(支持key-value键值对) key value 1 张三 2 ...

  5. week_04 常用类以及核心集合

    内部类 局部内部类 /* 关于局部内部类,它的书写位置,在外部类的成员方法中的定义的类 局部内部类可以访问外部类的成员变量包括私有! 在外部类的局部位置,访问内部类的成员方法,创建当前局部内部类对象来 ...

  6. Java基础知识之扫描器(Scanner)

    一.定义: 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配.然后可以使用不同的 next 方法将得到的 ...

  7. Scanner:扫描器

    package com.softeem;import java.util.Scanner; import java.util.Arrays; import java.util.Scanner;/*** ...

  8. Scanner类详解

    Scanner类用于获取键盘输入(是一个基于正则表达式的文本扫描器),它可以从文件.字符串.输入流中解析出基本类型值和字符串值.Scanner类提供了多个构造器,不同的构造器可以接收文件.字符串和输入 ...

  9. Scanner类、Random类、ArrayList类

    Scanner类: 一个可以解析基本类型和字符串的简单文本扫描器. Scanner sc = new Scanner(System.in); int i = sc.nextInt(); 匿名对象 :没 ...

最新文章

  1. 使用HTML5监測站点性能
  2. OpenMP的一点使用经验
  3. 调用 动态库 实现插件(windows linux)
  4. go语言for循环中修改临时变量无效
  5. 企业应用程序开发框架的分类
  6. 消息驱动 微服务器,消息驱动的微服务-Spring Cloud Stream整合RocketMQ
  7. JEECG 开源平台全视频和文档
  8. Mysql学习总结(51)——Linux主机Mysql数据库自动备份
  9. Android学习笔记---09_深入了解各种布局技术
  10. 若n = 2; m = 5 则 计算 2 + 22 + 222 + 2222 + 22222的和 ;若n = 3; m = 4 则 计算 3 + 33 + 333 + 3333的和
  11. get buffer from CMSampleBufferRef
  12. COGS2421 简单的Treap
  13. 从 Netflix 到 Alibaba,Spring Cloud 更好了吗?
  14. kali linux实现wifi扫描与密码字典破解入门
  15. 【韦东山嵌入式Linux】vi编辑器入门笔记
  16. 推荐图书《周一清晨的领导课》
  17. html 列表 表格 form表单 文本域 label
  18. HNU小学期实训课设
  19. 小米首页产品调研分析和设计方案介绍(详细的倒计时代码介绍)
  20. 基于javaweb个人网站论坛的设计与实现(源码、论文、毕业设计、数据库文件)

热门文章

  1. 玩机搞机---关于安卓机型工厂固件 刷机 端口解密 解bl锁 写串 nv损坏 等相关常识
  2. HDFS原理 | 一文读懂HDFS架构与设计
  3. 杰理之download加key会报错(无效的key文本)的解决办法【篇】
  4. 关于64位MATLAB调用refprop函数时出错的解决方法
  5. 《大型数据库技术,传智播客Java百度网盘
  6. CAD2021精简版安装教程附下载地址
  7. Pytorch学习——GAN——MINST
  8. 华兴资本年营收25亿:净利16亿 同比增56.5%
  9. linux中c语言kbhit函数用法,linux下kbhit()函数 getch函数。
  10. MATLAB南邮认证,典范!西电、南邮、中北大学微电子科学与工程通过工程教育认证...