StreamTokenizer用来分隔字符串。

可以获取输入流并将其分析为Token(标记)。StreamTokenizer的nextToken方法将读取下一个标记。

功能 
1、 将输入流分解成一组标记,允许一次读一个。分解过程由一张表和一些可以设置成各种状态的标志来控制。  
2、读取的每个字节被认为是“\u0000”-“\u00FF”之间的字符。空格(“\u0000”-“\u0020”),字母(“A”-“Z”,“a”-“z”,“\u00A0”-“\u00FF”),数字,串引号(“,“),注释字符(“/”))。  
3、做法:以一个InputStream作为源,创建一个StreamTokenizer对象,设置参数,循环调用nextToken,返回流中下一个标记的类型,并处理相关的值。 
4、主要用于分析Java风格的输入;不是通用的标记分析器。  ttype域:nextToken后刚读取的标记类型。六种情况:

  • 单字符标记:表示该字符(转换成整数)
  • 引号串标记:引号符(String类型域sval存储了串内容)
  • TT_WORD(-3):单词。String类型域sval存储了该单词。
  • TT_NUMBER(-2):数。double类型域nval保存该数值。只能识别十进制浮点数。( ?  3.4e79,0xffff )
  • TT_EOL(“\n”):行结束。
  • TT_EOF(-1):文件结束。
 //创建分析给定字符流的标记生成器
            StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//ordinaryChar方法指定字符参数在此标记生成器中是“普通”字符。
st.ordinaryChar('\''); //指定单引号、双引号和注释符号是普通字符
            st.ordinaryChar('\"');
            st.ordinaryChar('/')
//nextToken方法读取下一个Token.
  //TT_EOF指示已读到流末尾的常量。
            while (st.nextToken() != StreamTokenizer.TT_EOF) {
  //在调用 nextToken 方法之后,ttype字段将包含刚读取的标记的类型
                switch (st.ttype) {
  //TT_EOL指示已读到行末尾的常量。
                case StreamTokenizer.TT_EOL:
                    break;
  //TT_NUMBER指示已读到一个数字标记的常量
                case StreamTokenizer.TT_NUMBER:
  //如果当前标记是一个数字,nval字段将包含该数字的值
                    s = String.valueOf((st.nval));
                    System.out.println(s);
                    numberSum += s.length();
                    break;
  //TT_WORD指示已读到一个文字标记的常量
                case StreamTokenizer.TT_WORD:
   //如果当前标记是一个文字标记,sval字段包含一个给出该文字标记的字符的字符串
                    s = st.sval;
                    wordSum += s.length();
                    break;
                default:
public static void main(String[] args) throws IOException{StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));//PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));int a, b;while(in.nextToken() != StreamTokenizer.TT_EOF){a = (int)in.nval;in.nextToken();b = (int)in.nval;//out.println(a + b);System.out.println("a + b = "+(a+b));}out.flush();}
}

转载于:https://www.cnblogs.com/youhoo-IT/p/5132768.html

StreamTokenizer输入中的用法相关推荐

  1. 一个线程中lock用法的经典实例

    1 /* 2 该实例是一个线程中lock用法的经典实例,使得到的balance不会为负数 3 同时初始化十个线程,启动十个,但由于加锁,能够启动调用WithDraw方法的可能只能是其中几个 4 作者: ...

  2. python管道界面_python中管道用法入门实例

    本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...

  3. LTRIM、RTRIM和TRIM在ORACLE中的用法:

    LTRIM.RTRIM和TRIM在ORACLE中的用法: 1.LTRIM(C1,C2) 其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVE ...

  4. c# 多线程中lock用法的经典实例

    一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行, ...

  5. Common-lang包中StringUtils用法

    Common-lang包中StringUtils用法 StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且 ...

  6. jquery中cookie用法实例详解(获取,存储,删除等)

    这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以 ...

  7. python管道怎么使用_python中管道用法入门实例

    python中管道用法入门实例 本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consum ...

  8. python pandas模块_Python3.5 Pandas模块中Series用法详解

    Python3.5 Pandas模块中Series用法实例 本文实例讲述了Python3.5 Pandas模块之Series用法.分享给大家供大家参考,具体如下: 1.Pandas模块引入与基本数据结 ...

  9. vb中msgbox用法

    vb中msgbox用法 VB中的函数,可实现弹出窗口. 作用:在对话框中显示消息,等待用户单击按钮,并返回一个 Integer 告诉用户单击哪一个按钮. 语法: MsgBox(prompt[, but ...

最新文章

  1. lnmp架构——架构理解
  2. react 合并数组_React 数组合并去重,实现请求三遍返回三组数据的合并去重。
  3. 三次握手和四次断开问题
  4. hdu1412 {A} + {B}(TreeSet和Iterator的使用)
  5. java线程同步的实现_【Java多线程系列三】实现线程同步的方法
  6. 发送邮件现在应用得最多的两种情况就是利用.NET自带的发送邮件和利用jmail组件来发送邮件。...
  7. linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
  8. 猫影视接口相关及短网址
  9. 前端QRCode.js生成二维码(解决长字符串模块和报错问题)
  10. WPF引用外部类库中的资源文件提示不能找到的解决方法
  11. UI交互设计师在准备简历时应该注意什么?
  12. c语言fopen函数读dat文件,C语言 从a.dat文件读入数据存入b.dat文件里面(以字符形式)...
  13. springboot 使用spring security
  14. 计算机工程师对社会报答什么,报答作文400字(精选10篇)
  15. 一文搞清楚opengl、openglES、GLEW、的关系GLUT、FreeGLUT、GLFW
  16. 爬虫案例—京东数据爬取、数据处理及数据可视化(效果+代码)
  17. [linux学习]centos下mysql的简单使用教程
  18. matlab 画渐近线,如何绘制渐近线?
  19. AV1和开放媒体联盟(AOM)的发展、成果与未来
  20. 区块链+支付:区块链技术是什么?它如何在支付行业中使用?

热门文章

  1. 解决chrome和firefox flash不透明的方法
  2. 一种简单定义FourCC常量的方法 (C/C++)
  3. ocr python opencv_如何使用(opencv/python)来实现OCR处
  4. DOCKER OVERLAY2占用大量磁盘空间解决办法
  5. 从用户观点对计算机如何分类,从用户的观点看操作系统是
  6. MySQL分组查询—按函数分组
  7. 装饰者模式和适配器模式对比
  8. 分布式事务常见解决方案-关于状态机
  9. Properties作为Map集合的特有方法
  10. SpringMVC的数据响应-回写数据-直接回写json格式字符串(应用)