设为首页 加入收藏

TOP

2011年计算机二级考试JAVA知识点整理(25)
2014-10-31 20:30:15 】 浏览:278
Tags:2011年 计算机 二级 考试 JAVA 知识点 整理

  1.1.3.2.8 分解


  分解 是指将字节或字符序列分割为像单词这样的逻辑块的过程。Java 提供StreamTokenizer 类, 像下面这样操作:


  import java.io.*;


  public class token1 {


  public static void main(String args[]) {


  if (args.length != 1) {


  System.err.println("missing filename");


  System.exit(1);


  }


  try {


  FileReader fr = new FileReader(args[0]);


  BufferedReader br = new BufferedReader(fr);


  StreamTokenizer st = new StreamTokenizer(br);


  st.resetSyntax();


  st.wordChars('a', 'z');


  int tok;


  while ((tok = st.nextToken()) != StreamTokenizer.TT_EOF) {


  if (tok == StreamTokenizer.TT_WORD)


  ;// st.sval has token


  }


  br.close();


  } catch (IOException e) {


  System.err.println(e);


  }


  }


  }


  这个例子分解小写单词 (字母a-z)。如果你自己实现同等地功能,它可能像这样:


  import java.io.*;


  public class token2 {


  public static void main(String args[]) {


  if (args.length != 1) {


  System.err.println("missing filename");


  System.exit(1);


  }


  try {


  FileReader fr = new FileReader(args[0]);


  BufferedReader br = new BufferedReader(fr);


  int maxlen = 256;


  int currlen = 0;


  char wordbuf[] = new char[maxlen];


  int c;


  do {


  c = br.read();


  if (c >= 'a' && c <= 'z') {


  if (currlen == maxlen) {


  maxlen *= 1.5;


  char xbuf[] = new char[maxlen];


  System.arraycopy(wordbuf, 0, xbuf, 0, currlen);


  wordbuf = xbuf;


  }


  wordbuf[currlen++] = (char) c;


  } else if (currlen > 0) {


  String s = new String(wordbuf, 0, currlen); // do something


  // with s


  currlen = 0;


  }


  } while (c != -1);


  br.close();


  } catch (IOException e) {


  System.err.println(e);


  }


  }


  }


  第二个程序比前一个运行快大约 20%,代价是写一些微妙的底层代码。


  StreamTokenizer 是一种混合类,它从字符流(例如 BufferedReader)读取, 但是同时以字节的形式操作,将所有的字符当作双字节(大于 0xff) ,即使它们是字母字符。


  编辑推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇2011年计算机二级考试JAVA知识点.. 下一篇2011年计算机二级考试JAVA知识点..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目