//过了个年,学的忘了好多,准备从数据结构开始复习,复习了TreeMap时就写了个小程序,是一个简单的辞典,就是输出同//义词的
//给定辞典文件和键盘输入的单词,找出其近义词
package TreeMAP;
public class GUI {
public GUI(ThesaurusDrivers td){}
public void println(String str){
System.out.println(str) ;
}
}
*
* 一个简单的辞典
*/
package TreeMAP;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class Thesaurus {
private TreeMap thesaurusMap ;
public Thesaurus(){
thesaurusMap = new TreeMap() ;
}
public void add(String line){
LinkedList synonymList = new LinkedList() ;
StringTokenizer st = new StringTokenizer(line) ;
String word = st.nextToken() ;
while(st.hasMoreTokens())
synonymList.add(st.nextToken()) ;
thesaurusMap.put(word, synonymList) ;
}
public LinkedList getSynonyms(String word){
return (LinkedList)thesaurusMap.get(word) ;
}
}
package TreeMAP;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
public class ThesaurusDrivers {
Thesaurus thesaurus ;
GUI gui ;
boolean readingInFileName ;
public ThesaurusDrivers(){
final String IN_FILE_PROMPT = "Please enter the path for the input file." ;
gui = new GUI(this) ;
thesaurus = new Thesaurus() ;
readingInFileName = true ;
}
public void processInput(String str){
final String WORD_PROMPT = "\n\nPlease enter a word. The sentinel is " ;
final String SENTINEL = "***" ;
final String WORD_NOT_FOUND_MESSAGE ="That word does not appear in hte thesaurus." ;
final String SYNONYM_MESSAGE = "The synonyms of that word are " ;
final String CLOSE_WINDOW_MESSAGE = "\n\nThe execution of the project is complete. Please close " + "this window when you are ready." ;
LinkedList synonymList ;
if(readingInFileName){
if(thesaurusWasConstructed(str)){
readingInFileName = false ;
gui.println(WORD_PROMPT + SENTINEL) ;
}
}
else if(!str.equals(SENTINEL)){
synonymList = (LinkedList)thesaurus.getSynonyms(str) ;
if(synonymList == null)
gui.println(WORD_NOT_FOUND_MESSAGE) ;
else{
gui.println(SYNONYM_MESSAGE + synonymList) ;
gui.println(WORD_PROMPT + SENTINEL) ;
}
}
else{
gui.println(CLOSE_WINDOW_MESSAGE) ;
}
}
protected boolean thesaurusWasConstructed (String inFileName){
final String NO_INPUT_FILE_FOUND_MESSAGE = "Error: there is no file with that path. \n\n" ;
final String ERROR_MESSAGE = "Exception:" ;
final String IN_FILE_PROMPT = "Please enter the path for the input file." ;
BufferedReader inFile ;
String line ;
boolean success = false ;
try{
inFile = new BufferedReader(new FileReader(inFileName)) ;
success = true ;
while((line = inFile.readLine()) != null)
thesaurus.add(line) ;
inFile.close() ;
}catch(FileNotFoundException e){
gui.println(NO_INPUT_FILE_FOUND_MESSAGE + IN_FILE_PROMPT) ;
}catch(IOException e){
gui.println(ERROR_MESSAGE + e) ;
}
return success ;
}
}
package TreeMAP;
public class Test_Thesaurus {
public static void main(String[] args) {
// TODO Auto-generated method stub
ThesaurusDrivers td = new ThesaurusDrivers() ;
td.processInput("thesaurus.in") ;
}
}
/***/
/***thesaurus.in:
close near confined
confined cramped
correct true
cramped confined
near close
one singular unique
singular one unique
true correct
unique singular one
***/
分享到:
相关推荐
delphi做的权限系统,请大家帮忙看看错在哪,我无法实现其功能
我编了一个程序不知道那李出了错请大家看看,请大家帮帮忙啊!
我自己写的一段代码,有一点没调通,发出来共享下 同时也请过路高手帮忙看看到底错在那里? 2290136@163.com
这个压缩包里全是apk,并且全是小天才内置应用的apk,我希望各位大佬帮忙做成刷机包(具体操作是先下载一个安卓4.几的wearos刷机包,然后进入这个刷机包中的一个目录(usr-app)把app文件夹中的应用全删了,并替换成...
1、确保您的页面元素标记是有效的 2、使用调试工具(例如:Firebug),看看是否有异常 3、引用文件或依赖模块或方法是否有效 4、减少到最小测试用例(保持删除的东西,直到问题消失等) 5、问题描述尽量简洁,保持...
【声明】 以前的我可能资源搞错,真对不起那些下载了的朋友们。...有将近8000个日语单词,在你日语式样看不明白的时候绝对用的着,而且在chinesewriter查不到单词的时候也可以找个这个帮忙,很简单只需crtl+f
我的第一个MapReduce程序,对基础代码进行了,些许的优化,如果是才开始学的可以参考一下,老手emmm,帮忙看错,嘻嘻(最后要加上fs.close(); 作者打包的时候忘了加了)
朋友帮忙看了下源代码...发现 字节问题...一个ARP包 的字节是 多少来着 不记得了 但是我的2个结构体加起来 是超过了那个 字节 为什么会这样呢 ? 因为结构体 有自动 数据对齐的功能 详细情况 大家也应该清楚 然后我就...
不显示删除回复显示所有回复显示星级回复显示得分回复 基于MFC和winsock的网络聊天程序 编译没错,但运行后没响应,大家帮帮忙给看下.
我们将看看情况如何。 掌握Ionic框架:学习构建和部署基于Native Speed HTML5的应用程序 该存储库包含的的减价和代码。 对于错别字,代码错误等,拉取请求非常受欢迎:) 设置基础项目 导航到/ code /文件夹,然后...
1、 一款无需分析师帮忙的机器人智能决策软件 2、金钱永不眠,黄蓝带双剑合一实战做空的方法 3、金钱永不眠,黄蓝带三剑合一实战做多的方法 4、输入现货名字、股票代码,或股票首字母,按Enter回车键,可以分析看股...
1、 一款无需分析师帮忙的机器人智能决策软件 2、金钱永不眠,黄蓝带双剑合一实战做空的方法 3、金钱永不眠,黄蓝带三剑合一实战做多的方法 4、输入现货名字、股票代码,或股票首字母,按Enter回车键,可以分析看股...
1、 一款无需分析师帮忙的机器人智能决策软件 2、金钱永不眠,黄蓝带双剑合一实战做空的方法 3、金钱永不眠,黄蓝带三剑合一实战做多的方法 4、输入现货名字、股票代码,或股票首字母,按Enter回车键,可以分析看股...
非常荣幸的受作者邀请来帮忙写这个序,诚惶诚恐,何德何能? 不记得何时开始认识的作者了。当初只是作为一个自学者混迹于各个技术群中,后来发现几乎每个群 里每天充斥着大量的垃圾信息,QQ 不停的闪动,看吧?!都...
要是打印头下的传感器没问题,你可以看一下连那个传感器的头缆! 回复: 经过再次检查发现主板上BD3980F芯片有点烫手,不知是否跟这有关 回复 不知道了,我的情况和你所说的一样,以前修过好多,但是从来还没有见到如这...
要是打印头下的传感器没问题,你可以看一下连那个传感器的头缆! 回复: 经过再次检查发现主板上BD3980F芯片有点烫手,不知是否跟这有关 回复 不知道了,我的情况和你所说的一样,以前修过好多,但是从来还没有见到如这...
朋友有卖迪兰显卡,正好也在一个地方住,打了个电话,600元以内的卡,最终选定了RX550超能4G(D5,128bit),下班后帮忙带回来给我。 迪兰RX550超能4G,这玩意儿居然可以开核?!! 迪兰RX550超能4G,这...
很多人仅仅是简单的把文中的各种代码复制下来,然后看起来很刁的发在各种论坛上,不过你要真去认真研读这些代码,就会完全不知所云了。原因是这篇文章最精华的部分是代码的解释而非代码本身。 一方面为了自己学习,...
希望这个对大家有帮忙。教程中所提到的方法和工具,仅供参考,本人不承担任何可能的风险和法律责任。谢谢! 1、如何Marker? 注意:刷过破解版bios的朋友,务必先刷成官方bios!已经是官方bios的略过此步。在这里...
希望这个对大家有帮忙。 1、如何Marker? 注意:刷过破解版bios的朋友,务必先刷成官方bios!已经是官方bios的略过此步。在这里还是假设你不是太菜鸟,知道怎么刷bios。 1)首先确定自己Thinkpad机型对应的slic2.1...