蒙在股里 发表于 2015-1-18 11:55:06

JAVA编程:Stream Tokenizing(分化字符串)

多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。stream|字符串从sun网站看到的StreamTokenizing
InTechTips:June23,1998,anexampleofstringtokenizationwaspresented,usingtheclassjava.util.StringTokenizer.

Theresalsoanotherwaytodotokenization,usingjava.io.StreamTokenizer.StreamTokenizeroperatesoninputstreamsratherthanstrings,andeachbyteintheinputstreamisregardedasacharacterintherangeu0000throughu00FF.

StreamTokenizerislowerlevelthanStringTokenizer,butoffersmorecontroloverthetokenizationprocess.Theclassusesaninternaltabletocontrolhowtokensareparsed,andthissyntaxtablecanbemodifiedtochangetheparsingrules.HeresanexampleofhowStreamTokenizerworks:


importjava.io.*;
importjava.util.*;

publicclassstreamtoken{
publicstaticvoidmain(Stringargs[])
{
if(args.length==0){
System.err.println("missinginputfilename");
System.exit(1);
}

Hashtablewordlist=newHashtable();

try{
FileReaderfr=newFileReader(args);
BufferedReaderbr=newBufferedReader(fr);

StreamTokenizerst=newStreamTokenizer(br);
//StreamTokenizerst=
//newStreamTokenizer(newStringReader(
//"thisisatest"));
st.resetSyntax();
st.wordChars(A,Z);
st.wordChars(a,z);
inttype;
Objectdummy=newObject();
while((type=st.nextToken())!=
StreamTokenizer.TT_EOF){
if(type==StreamTokenizer.TT_WORD)
wordlist.put(st.sval,dummy);
}
br.close();
}
catch(IOExceptione){
System.err.println(e);
}

Enumerationenum=wordlist.keys();
while(enum.hasMoreElements())
System.out.println(enum.nextElement());
}
}

Inthisexample,aStreamTokenizeriscreatedontopofaFileReader/BufferedReaderpairthatrepresentsatextfile.NotethataStreamTokenizercanalsobemadetoreadfromaStringbyusingStringReaderasillustratedinthecommented-outcodeshownabove(StringBufferInputStreamalsoworks,althoughthisclasshasbeendeprecated).

ThemethodresetSyntaxisusedtocleartheinternalsyntaxtable,sothatStreamTokenizerforgetsanyrulesthatitknowsaboutparsingtokens.ThenwordCharsisusedtodeclarethatonlyupperandlowercaselettersshouldbeconsideredtoformwords.Thatis,theonlytokensthatStreamTokenizerrecognizesaresequencesofupperandlowercaseletters.

nextTokeniscalledrepeatedlytoretrievewords,andeachresultingwordisfoundinthepublicinstancevariable"st.sval".ThewordsareinsertedintoaHashtable,andattheendofprocessingthecontentsofthetablearedisplayed,usinganEnumerationasillustratedinTechTips:June23,1998.Sotheactionofthisprogramistofindalltheuniquewordsinatextfileanddisplaythem.

StreamTokenizeralsohasspecialfacilitiesforparsingnumbers,quotedstrings,andcomments.ItsausefulalternativetoStringTokenizer,andisespeciallyapplicableifyouaretokenizinginputstreams,orwishtoexercisefinercontroloverthetokenizationprocess


用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。

蒙在股里 发表于 2015-1-21 16:58:51

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

飘飘悠悠 发表于 2015-1-28 05:35:22

是一种语言,用以产生「小应用程序(Applet(s))

乐观 发表于 2015-2-6 09:55:34

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

小妖女 发表于 2015-2-15 22:28:37

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

分手快乐 发表于 2015-2-16 10:44:52

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

飘灵儿 发表于 2015-3-5 03:55:49

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

柔情似水 发表于 2015-3-16 21:11:15

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

深爱那片海 发表于 2015-3-23 01:22:48

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

小魔女 发表于 2015-3-24 15:09:22

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

再现理想 发表于 2015-3-27 21:01:36

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

仓酷云 发表于 2015-4-2 21:07:50

Java是一种计算机编程语言,拥有跨平台、面向对java

不帅 发表于 2015-4-10 09:45:57

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

只想知道 发表于 2015-4-10 12:29:18

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

第二个灵魂 发表于 2015-4-11 19:24:12

Java是一种计算机编程语言,拥有跨平台、面向对java

山那边是海 发表于 2015-4-16 16:11:13

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

小女巫 发表于 2015-4-19 08:50:02

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

愤怒的大鸟 发表于 2015-5-1 19:11:52

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

活着的死人 发表于 2015-5-4 14:41:47

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
页: [1]
查看完整版本: JAVA编程:Stream Tokenizing(分化字符串)