简介

Scanner类被用于输入的格式化中断,并将其移到Tokens中,然后对其单个的Tokens根据其数据类型进行翻译。

从input——Tokens

默认情况下,一个Scanner使用 空格 键去区分Tokens(空格键包括:blanks,tabs,line terminators. 全部的键值,参考文档Character.isWhitespace) Scanning是怎么工作的呢,让我们一起分析ScanXan,是一个以单个词组读取xanadu.txt每一行数据,并且输出的程序:

import java.io.*;
import java.util.Scanner; public class ScanXan {
public static void main(String[] args) throws IOException { Scanner s = null; try {
s = new Scanner(new BufferedReader(new FileReader("xanadu.txt"))); while (s.hasNext()) {
System.out.println(s.next());
}
} finally {
if (s != null) {
s.close();
}
}
}
}

请注意,ScanXan在扫描仪对象完成后调用扫描仪的关闭方法。 即使扫描仪不是流,您仍然需要关闭它,以表明您已完成其底层流。 ScanXan的输出看起来像这样:

In

Xanadu

did

Kubla

Khan

A

stately

pleasure-dome

...
要使用不同的Tokens分隔符,请调用useDelimiter(),指定正则表达式。 例如,假设您希望Tokens分隔符为逗号,可选地后跟空格。 你会调用:
s.useDelimiter(",\\s*");

翻译个体Tokens

ScanXan示例将所有输入Tokens视为简单的字符串值。 Scanner还支持所有Java语言的原始类型(char除外)以及BigInteger和BigDecimal的Tokens。 此外,数值可以使用数千个分隔符。 因此,在美国地区,扫描仪正确读取字符串“32,767”表示整数值。 我们必须提及区域设置,因为数千个分隔符和十进制符号是特定于区域设置的。 因此,如果我们没有指定扫描仪应该使用美国语言环境,以下示例将无法在所有语言环境中正常工作。
这是你不必担心的事情,因为您的输入数据通常来自使用相同语言环境的来源。 但这个例子是Java Tutorial的一部分,并且遍布世界各地。 ScanSum示例读取一个double值的列表并将其添加。 来源:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Locale; public class ScanSum {
public static void main(String[] args) throws IOException { Scanner s = null;
double sum = 0; try {
s = new Scanner(new BufferedReader(new FileReader("usnumbers.txt")));
s.useLocale(Locale.US); while (s.hasNext()) {
if (s.hasNextDouble()) {
sum += s.nextDouble();
} else {
s.next();
}
}
} finally {
s.close();
} System.out.println(sum);
}
}

这是简单的输入文件usnumbers.txt

8.5

32,767

3.14159

1,000,000.1

输出字符串为“1032778.74159”。 在某些区域设置中,该时间段将是一个不同的字符,因为System.out是一个PrintStream对象,该类不提供覆盖默认语言环境的方法。 我们可以覆盖整个程序的区域设置,或者我们只能使用格式化,如下一个主题格式化所述。


IO Streams:扫描的更多相关文章

  1. asyncio异步IO——Streams详解

    前言 本文翻译自python3.7官方文档--asyncio-stream,译者马鸣谦,邮箱 1612557569@qq.com.转载请注明出处. 数据流(Streams) 数据流(Streams)是 ...

  2. IO Streams:来源于命令行的IO

    简介 程序经常从命令行运行并与在命令行环境中的用户交互.Java平台支持这种互动的方式有两种:通过标准流,通过控制台 标准流 标准流是许多操作系统的一项功能.默认情况下,他们从键盘输入读取和输出到显示 ...

  3. IO Streams:字符流

    简介 Java平台使用Unicode约定存储字符值.字符流I / O自动将此内部格式转换为本地字符集.在西方,本地字符集通常是ASCII的8位超集. 对于大多数应用,具有字符流的I / O并不比具有字 ...

  4. IO Streams:字节流

    简介 程序使用字节流来执行8位字节的输入和输出.所有字节流类都继承于InputStream和OutputStream. 有很多字节流类:为了说明字节流如何工作,我们将重点关注文件I / O字节流Fil ...

  5. IO Streams:对象流

    简介 正如数据流支持原始数据类型的I / O一样,对象流支持对象的I / O.标准类中的大多数但不是全部都支持对象的序列化.那些实现标记接口Serializable的那些. 对象流类是ObjectIn ...

  6. IO Streams:数据流

    数据流支持原始数据类型值(布尔型,字符型,字节型,短型,长整型,浮点型和双倍型)的二进制I / O以及字符串值.所有数据流都实现了DataInput接口或DataOutput接口.本节重点介绍这些接口 ...

  7. IO Streams:格式化

    简介 实现格式化接口的流对象是PrintWriter,字符流类或PrintStream(字节流类). 注意:您可能唯一需要的PrintStream对象是System.out和System.err. ( ...

  8. IO Streams:缓冲流

    我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...

  9. 答:SQLServer DBA 三十问之六:Job信息我们可以通过哪些表获取;系统正在运行的语句可以通过哪些视图获取;如何获取某个T-SQL语句的IO、Time等信息;

    6. Job信息我们可以通过哪些表获取:系统正在运行的语句可以通过哪些视图获取:如何获取某个T-SQL语句的IO.Time等信息: 我的MSDB数据库中有全部的表: sys.all_columns,s ...

随机推荐

  1. jmeter参考网址

    http://blog.csdn.net/dongdong9223/article/details/49248979 http://blog.csdn.net/hjh00/article/detail ...

  2. android app 压力测试工具-monkey tool

    一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是A ...

  3. userBean设置属性2

    package com.java.model; public class Student { private String name;private int age; public String ge ...

  4. ZOJ 3471 Most Powerful (状压DP,经典)

    题意: 有n个原子,每当两个原子碰撞时就会产生能量,并且消耗其中一个原子.已知每两个原子碰撞时消耗其中指定一个原子所产生的能量,问最多能产生多少能量? 思路: 一开始以为是找一个有序序列,使得能量最大 ...

  5. SAP数据中心概述

    文章目录 SAP数据中心内部的组成部分 SAP数据中心的安全性 SAP数据中心的绿色运营 SAP云平台编程环境 Jerry的前一篇文章企业数字化转型与SAP云平台介绍了SAP云平台在企业数字化转型中的 ...

  6. 八数码问题(一) 暴力BFS + STL

    八数码问题是一个经典的人工智能问题.具体问题不累述了. 思路:由于存在多组测试数据,可以考虑“打表法“.所谓打表法,即枚举所有的初始情况,记录其到达终点的路径.而在这个题目中,顺序打表会调用很多次BF ...

  7. mysql数据库操作手册

      1 存储过程的写法 以下是一个带有入参的存储过程模板, #删除方案-存储过程 CREATE PROCEDURE procPersonAppointRecallPlanByPlanUuidDelet ...

  8. DROP GROUP - 删除一个用户组

    SYNOPSIS DROP GROUP name DESCRIPTION 描述 DROP GROUP 从数据库中删除指定的组.组中的用户不被删除. 组中的用户不被删除. PARAMETERS 参数 n ...

  9. @Param注解在dao层的使用

    有时在前台用ajax传过来许多参数,不知道在mybatis如何封装,就要用到@Param注解了,这时就不需要在映射文件写传入参数了,这种方法虽然比较取巧,但还是很实用的,如下图:

  10. bug汇总

    bug 2018年8月23日 bug 1:散点图画不出来. plt.scatter(validation_examples["longitude"], validation_exa ...