StreamTokenizer输入中的用法
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)));
st.ordinaryChar('\"');
st.ordinaryChar('/')
//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输入中的用法相关推荐
- 一个线程中lock用法的经典实例
1 /* 2 该实例是一个线程中lock用法的经典实例,使得到的balance不会为负数 3 同时初始化十个线程,启动十个,但由于加锁,能够启动调用WithDraw方法的可能只能是其中几个 4 作者: ...
- python管道界面_python中管道用法入门实例
本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...
- LTRIM、RTRIM和TRIM在ORACLE中的用法:
LTRIM.RTRIM和TRIM在ORACLE中的用法: 1.LTRIM(C1,C2) 其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVE ...
- c# 多线程中lock用法的经典实例
一.Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行, ...
- Common-lang包中StringUtils用法
Common-lang包中StringUtils用法 StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且 ...
- jquery中cookie用法实例详解(获取,存储,删除等)
这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以 ...
- python管道怎么使用_python中管道用法入门实例
python中管道用法入门实例 本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consum ...
- python pandas模块_Python3.5 Pandas模块中Series用法详解
Python3.5 Pandas模块中Series用法实例 本文实例讲述了Python3.5 Pandas模块之Series用法.分享给大家供大家参考,具体如下: 1.Pandas模块引入与基本数据结 ...
- vb中msgbox用法
vb中msgbox用法 VB中的函数,可实现弹出窗口. 作用:在对话框中显示消息,等待用户单击按钮,并返回一个 Integer 告诉用户单击哪一个按钮. 语法: MsgBox(prompt[, but ...
最新文章
- lnmp架构——架构理解
- react 合并数组_React 数组合并去重,实现请求三遍返回三组数据的合并去重。
- 三次握手和四次断开问题
- hdu1412 {A} + {B}(TreeSet和Iterator的使用)
- java线程同步的实现_【Java多线程系列三】实现线程同步的方法
- 发送邮件现在应用得最多的两种情况就是利用.NET自带的发送邮件和利用jmail组件来发送邮件。...
- linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
- 猫影视接口相关及短网址
- 前端QRCode.js生成二维码(解决长字符串模块和报错问题)
- WPF引用外部类库中的资源文件提示不能找到的解决方法
- UI交互设计师在准备简历时应该注意什么?
- c语言fopen函数读dat文件,C语言 从a.dat文件读入数据存入b.dat文件里面(以字符形式)...
- springboot 使用spring security
- 计算机工程师对社会报答什么,报答作文400字(精选10篇)
- 一文搞清楚opengl、openglES、GLEW、的关系GLUT、FreeGLUT、GLFW
- 爬虫案例—京东数据爬取、数据处理及数据可视化(效果+代码)
- [linux学习]centos下mysql的简单使用教程
- matlab 画渐近线,如何绘制渐近线?
- AV1和开放媒体联盟(AOM)的发展、成果与未来
- 区块链+支付:区块链技术是什么?它如何在支付行业中使用?
热门文章
- 解决chrome和firefox flash不透明的方法
- 一种简单定义FourCC常量的方法 (C/C++)
- ocr python opencv_如何使用(opencv/python)来实现OCR处
- DOCKER OVERLAY2占用大量磁盘空间解决办法
- 从用户观点对计算机如何分类,从用户的观点看操作系统是
- MySQL分组查询—按函数分组
- 装饰者模式和适配器模式对比
- 分布式事务常见解决方案-关于状态机
- Properties作为Map集合的特有方法
- SpringMVC的数据响应-回写数据-直接回写json格式字符串(应用)