仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 776|回复: 8
打印 上一主题 下一主题

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

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:07:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
在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:04 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
再现理想 该用户已被删除
板凳
发表于 2015-1-26 11:12:47 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
乐观 该用户已被删除
地板
发表于 2015-1-27 21:23:08 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
5#
发表于 2015-2-6 15:34:17 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
山那边是海 该用户已被删除
6#
发表于 2015-2-16 21:45:43 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小女巫 该用户已被删除
7#
发表于 2015-3-5 10:09:37 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
若相依 该用户已被删除
8#
发表于 2015-3-12 04:00:51 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
分手快乐 该用户已被删除
9#
发表于 2015-3-19 17:53:15 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表