• IO Streams:扫描


    简介

    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对象,该类不提供覆盖默认语言环境的方法。 我们可以覆盖整个程序的区域设置,或者我们只能使用格式化,如下一个主题格式化所述。

  • 相关阅读:
    模板代码生成器 Template Code Creater
    Oracle编程入门经典 第2章 SQLPlus和基本查询
    Oracle编程入门经典 第5章 体系结构
    数据仓库
    C++ WINDOWS API 第1章 Windows 应用程序开发入门
    C++ WINDOWS API 第2章 Windows API概要
    Oracle编程入门经典 第7章 表
    单交换机VLAN虚拟局域网划分
    Oracle日志文件被误删除
    Oracle编程入门经典 第4章 新9i示例模式
  • 原文地址:https://www.cnblogs.com/hhx626/p/8320411.html
Copyright © 2020-2023  润新知