Java输入 StreamTokenizer

Posted blog-cpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java输入 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):字。TT_WORD指示已读到一个文字标记的常量

  • TT_NUMBER(-2):数,TT_NUMBER指示已读到一个数字标记的常量

  • TT_EOL(“ ”):行结束,指示已读到行末尾的常量

  • TT_EOF(-1):文件结束,TT_EOF指示已读到流末尾的常量

为了提高效率,使用BufferedReader,如下,创建StreamTokenizer对象

StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); 

为了从流中获取标记,可以调用StreamTokenizer的nextToken()方法。 调用nextToken()方法以后,如果标记是字符串,可用 String s=st.sval,如果是整数用 int n=(int) st.nval得到。

测试:

 1 public static void streamTokenizerTest() throws IOException {
 2         StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
 3         //PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
 4         int a, b;
 5         while(in.nextToken() != StreamTokenizer.TT_EOF){
 6             a = (int)in.nval;//默认为Double
 7             in.nextToken();
 8             b = (int)in.nval;
 9             //out.println(a + b);
10             System.out.println("a + b = "+(a+b));
11         }
12         //out.flush();
13     }

 

以上是关于Java输入 StreamTokenizer的主要内容,如果未能解决你的问题,请参考以下文章

ACM必备的快速输入输出(Java)

JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。(代码片

Java OJ 快速读入 竞赛用

报错:java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id “null“解决的方式(代码片

015 输入理解时间片

用java给html文件添加必要的控制html代码片