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. 线程:创建--【J2SE】
  2. springboot thymeleaf 生成静态html
  3. 物联网中的 ARM 漏洞利用
  4. Lambda表达式和闭包Closure
  5. python填表_小Python填表得到d
  6. 技嘉z77主板msata速度_功不可没的技嘉Z77主板_主板评测-中关村在线
  7. HttpRunnerManager接口自动化测试框架在win环境下搭建教程
  8. spring-data-elasticsearch (elasticsearch 6.7.0) @Document 和 @Field 注解详解
  9. Oracle刷建表语句
  10. mysql 联合查询_MySQL联合查询
  11. app_start(‘com.ss.android.ugc.aweme‘) 打不开app 无反应 Activity not started, unable to resolve Intent {
  12. 鱼眼和全向视图的图像深度学习方法
  13. 增益 Gain 分贝 dB
  14. ORB_原理与源码解析
  15. c语言求n个数最大最小值,c语言 如何求n个数的最大值 最小值
  16. 虎扯:《小苹果》为什么那么火
  17. 第十届全球云计算大会 | 华云数据荣获“2013-2022十周年特别贡献奖”
  18. 基于HAL库创建Keil工程模板
  19. [Android6.0][RK3399] PWM Backlight 驱动分析
  20. 窗口函数(Window Function)

热门文章

  1. Axure原型模板、元件库、组件库
  2. 计算机科学导论大一,(计算机科学导论期末复习资料.doc
  3. 宁波9家游戏开发运营公司简介
  4. python办公小案例
  5. 椭圆形方程的差分解法
  6. 2.3 高密度散点图
  7. OptiSystem应用:100 Gbps DP QPSK
  8. 像素、分辨率、DPI、PPI
  9. 卷积神经网络表情识别,神经网络表情识别
  10. 免费分享SPSS 17.0 软件