简介

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. Python+Selenium之断言对应的元素是否获取以及基础知识回顾

    # coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.maximize_window () ...

  2. ZOJ 1729 Hidden Password (字符串最小表示)

    以前听过,不知道是什么,其实就是字符串首尾相连成一个环,n种切法求一个字典序最小的表示. 朴素算法大家都懂.O(n)的算法代码非常简单,最主要的思想是失配的时候尽可能大的移动指针. 另外附上一个不错的 ...

  3. Python-OpenCV中的filter2D()函数

    使用自定义内核对图像进行卷积.该功能将任意线性滤波器应用于图像.支持就地操作.当光圈部分位于图像外部时,该功能会根据指定的边框模式插入异常像素值. 语法 函数原型: dst=cv.filter2D(s ...

  4. 三、npm start报错:./node_modules/history/esm/history.js解决办法

    package.json中的roadhog换为:'^2.5.0-beta.4',删除node_modules文件夹,在执行npm install,npm start.

  5. MFC:Unicode和多字节字符集下 CString和char的转化(MFC中)

    2011-05-16 00:10 1166人阅读 评论(0) 收藏 举报 mfcdelete Unicode下 CString转TCHAR TCHAR* szMsg = new TCHAR[wcsle ...

  6. VIM+ctags+cscope用法

    使用vim + cscope/ctags,就能够实现Source Insight的功能,可以很方便地查看分析源代码.   关键词: vim, cscope, ctags, tags   1. 查看vi ...

  7. PAT (Basic Level) Practise (中文)- 1012. 数字分类 (20)

    http://www.patest.cn/contests/pat-b-practise/1012 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数 ...

  8. 有关SQL的一道面试题

    这是一个学生分数表 StudentName            StudySubject           SubjectScore Peter                           ...

  9. 01_6_SERVLET如何从上一个页面取得参数

    01_6_SERVLET如何从上一个页面取得参数 1. sevlet实现 public void doGet(HttpServletRequest request, HttpServletRespon ...

  10. 初涉manacher

    一直没有打过……那么今天来找几道题打一打吧 manacher有什么用 字符串的题有一类是专门关于“回文”的.通常来说,这类问题要么和一些dp结合在一起:要么是考察对于manacher(或其他如回文自动 ...