仓酷云
标题:
JAVA编程:对Reader举行token的类,能够访进多个s...
[打印本页]
作者:
活着的死人
时间:
2015-1-18 11:07
标题:
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[split.length];for(inti=0;i<split.length;i++){splitsSf[i]="";}}
/*(非Javadoc)*@seejava.util.Iterator#hasNext()*/publicbooleanhasNext(){if(indexOf()>-1){returntrue;}returnfalse;}privateintcurrentsplit=-1;privateintindexOf(){
currentsplit=-1;int[]pos=newint[splits.length];for(inti=0;i<pos.length;i++){splitsSf[i]="";pos[i]=0;}//初试地位标记
try{while(true){
for(intj=0;j<pos.length;j++){if(pos[j]>=splits[j].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[i].charAt(pos[i]);
if(splitposchar==readchar){pos[i]++;splitsSf[i]+=readchar;}elseif(splitposchar==*){charnextchar=splits[i].charAt((pos[i]+1));//失掉*前面一个字符,一样平常统配符都暗示为1*2if(nextchar==readchar){pos[i]++;pos[i]++;}splitsSf[i]+=readchar;}elseif(splitposchar==?){pos[i]++;splitsSf[i]+=readchar;}else{
pos[i]=0;splitsSf[i]="";}
}
}
}catch(IOExceptione){
e.printStackTrace();}
return-1;}
/*(非Javadoc)*@seejava.util.Iterator#next()*/publicObjectnext(){
inti=HasRead.length()-splitsSf[currentsplit].length();
StringBuffersf=newStringBuffer();sf=this.HasRead;HasRead=newStringBuffer();//if(i<0){//i=0;//}sf.setLength(i);returnsf;
}publicStringgetToken(){returnsplits[this.currentsplit];}publicStringgetTokenInReader(){returnsplitsSf[currentsplit];}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
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者:
再现理想
时间:
2015-1-26 11:12
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者:
乐观
时间:
2015-1-27 21:23
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者:
仓酷云
时间:
2015-2-6 15:34
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者:
山那边是海
时间:
2015-2-16 21:45
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
小女巫
时间:
2015-3-5 10:09
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
若相依
时间:
2015-3-12 04:00
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
分手快乐
时间:
2015-3-19 17:53
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2