活着的死人 发表于 2015-1-18 11:07:49

JAVA编程:对Reader举行token的类,能够访进多个s...

大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
在java。util中的java.io.StringTokenizer类能对单个字符串举行剖析,在jdk1.4中的split也能够对单个字符串举行剖析,但都不克不及对Reader流举行剖析,在多个字符剖析的时分也不克不及前往支解两个字符串的字符串,上面这个类就是为懂得决这个成绩而写的,还能够在筹办包含一些最基础的剖析范例,*和?

能够设置多个split举行剖析,在剖析的时分前往对应的支解字符串

程序能够间接运转

/**创立日期2005-4-4**变动所天生文件模板为*窗口>首选项>Java>代码天生>代码和正文*/packagecom.csii.template;

importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.Reader;importjava.io.StringReader;importjava.util.Iterator;

/***@authorwsl**变动所天生范例正文的模板为*窗口>首选项>Java>代码天生>代码和正文*/publicclassReaderTokenimplementsIterator{

privateReaderreader=null;//寄存筹办剖析的字符流privateString[]splits=null;//筹办用来支解字符流的tokenprivateStringBufferHasRead=newStringBuffer();//寄存从流中已读的字符privateString[]splitsSf=null;//因为大概存在一些统配符,以是此处寄存统配符在token时的字符,好比在abcdefgh/****/publicReaderToken(Readerreader,String[]split){super();this.reader=reader;this.splits=split;splitsSf=newString;for(inti=0;i<split.length;i++){splitsSf="";}}

/*(非Javadoc)*@seejava.util.Iterator#hasNext()*/publicbooleanhasNext(){if(indexOf()>-1){returntrue;}returnfalse;}privateintcurrentsplit=-1;privateintindexOf(){

currentsplit=-1;int[]pos=newint;for(inti=0;i<pos.length;i++){splitsSf="";pos=0;}//初试地位标记

try{while(true){

for(intj=0;j<pos.length;j++){if(pos>=splits.length()){currentsplit=j;

returncurrentsplit;

//假如以后pos内里的长度到达最splits内里的最年夜值,前往以后的split}}

charreadchar=(char)reader.read();

if(readchar==-1){returncurrentsplit;}

if(readchar==65535){returncurrentsplit;}

HasRead.append(readchar);

for(inti=0;i<pos.length;i++){

charsplitposchar=splits.charAt(pos);

if(splitposchar==readchar){pos++;splitsSf+=readchar;}elseif(splitposchar==*){charnextchar=splits.charAt((pos+1));//失掉*前面一个字符,一样平常统配符都暗示为1*2if(nextchar==readchar){pos++;pos++;}splitsSf+=readchar;}elseif(splitposchar==?){pos++;splitsSf+=readchar;}else{

pos=0;splitsSf="";}

}

}

}catch(IOExceptione){

e.printStackTrace();}

return-1;}

/*(非Javadoc)*@seejava.util.Iterator#next()*/publicObjectnext(){

inti=HasRead.length()-splitsSf.length();

StringBuffersf=newStringBuffer();sf=this.HasRead;HasRead=newStringBuffer();//if(i<0){//i=0;//}sf.setLength(i);returnsf;

}publicStringgetToken(){returnsplits;}publicStringgetTokenInReader(){returnsplitsSf;}publicObjectgetEnd(){returnthis.HasRead;}/*(非Javadoc)*@seejava.util.Iterator#remove()*/publicvoidremove(){

}publicstaticvoidmain(String[]args)throwsIOException{String[]a=newString[]{"a?a"};Strings="cefaaasdbd";ReaderTokentoken=newReaderToken(newStringReader(s),a);while(token.hasNext()){System.err.println("next---"+token.next());System.err.println("token---"+token.getToken());System.err.println("getTokenInReader---"+token.getTokenInReader());}System.err.println("end--"+token.getEnd());

//StringReaderreader=newStringReader(s);//charc;//while((c=(char)reader.read())!=-1){//System.err.println(c);//System.out.println((long)c);//}

}}

你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。

若天明 发表于 2015-1-20 14:51:04

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

再现理想 发表于 2015-1-26 11:12:47

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

乐观 发表于 2015-1-27 21:23:08

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

仓酷云 发表于 2015-2-6 15:34:17

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

山那边是海 发表于 2015-2-16 21:45:43

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

小女巫 发表于 2015-3-5 10:09:37

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

若相依 发表于 2015-3-12 04:00:51

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

分手快乐 发表于 2015-3-19 17:53:15

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
页: [1]
查看完整版本: JAVA编程:对Reader举行token的类,能够访进多个s...