好程序员Java分享Java案例_英汉字典

在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例:
    
  实现功能:
        输入英文,给出对应的中文翻译,如果没有这个单词没有被收录会有相关提示
        
  代码编写环境
        JDK:1.8.0_191
        Eclipse:2019-03 (4.11.0)
        
  素材:
        dict.txt
            字典资源文本文件,保存一些下列格式的文件,英文和翻译之间用制表符隔开:
  Africa    n. 非洲
Aids    n. 爱滋病
America    n. 美洲
April    n. 四月

  案例实现用到的技术:
      IO流
      Map—HashMap
      字符串分割
      异常处理
      
  代码思路
1、根据字典文件路径,创建file对象
2、判断file对象是否为空,不为空就继续,否则直接返回null
3、File不为空,创建InputStreamReader和BufferedReader对象
4、循环读取字典文本中的内容,切割得到数组,保存在map中
5、提示输入单词,查询单词,输出查询结果
  
  运行效果
开始运行的提示:

查询成功的反馈


单词不存在的反馈

案例代码:

编写方法读取文本中的内容
package com.feng.demo01;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
 *    英汉字典案例
 * @author dushine
*/
public class GetDict {

    public static void main(String[] args) {
        String path = "E:\\dict.txt";

        // 获取字典中的所有内容
        Map<String, String> dict = getText(path);
        
        // 判断字典是否为空,提示输入单词,获取查询结果
        if (dict != null) {
            @SuppressWarnings("resource")
            
            // 获取输入内容
            Scanner input = new Scanner(System.in);
            System.out.println("请输入要查询的单词:");
            String word = input.next();
            
            // 查询字典获取中文,如果没有也给出反馈
            String ret = dict.get(word);
            if (ret != null) {
                System.out.println("查询结果:\n"+word + ":" + ret);
            } else {
                System.out.println("您查询的单词尚未收录,敬请期待!");
            }
        }
    }

    /**
     * 获取字典文件中内容
     * @param path
     * @return
     */
    private static Map<String, String> getText(String path) {
        // 可能会出现异常
        try {
            // 根据路径创建文件对象
            File file = new File(path);
            
            // 判断路径指向的文件是否存在
            if (file.exists() && file.isFile()) {
                // 创建map,存储读取得到的内容
                Map<String, String> dict = new HashMap<String, String>();
                System.out.println("文件路径正确,正在解析。。。");
                
                    // 创建输入流对象
                    InputStreamReader reader = 
  new InputStreamReader(new FileInputStream(file), "gbk");
                    BufferedReader bufferedReader = new BufferedReader(reader);
                    String text = null;
                    
                    // 循环读取文件内容
                    while ((text = bufferedReader.readLine()) != null) {
                        
                        // 切割每一行内容,得到数组
                        String[] arr = text.split("\t");
                        
                        // 把切割得到的内容放入map
                        dict.put(arr[0], arr[1]);
                    }
                    
                    // 读取结束,关闭流对象并返回结果
                    reader.close();
                    return dict;
                } else {
                System.out.println("字典崩溃啦,下次再来使用吧。。。");
            }
        } catch (Exception e) {
            System.out.println("字典好像出了点问题、文件内容出错啦。。。");
            e.printStackTrace();
        }
        
        // 路径指向的不是文件或者文件不存在返回null
        return null;
    }

转载于:https://www.cnblogs.com/gcghcxy/p/10938946.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同事更新几个表_最近计划学习的几个网站资源

在没有明确需要的时候逛知乎&#xff0c;B站什么的随便看教程&#xff0c;发现资源很多&#xff0c;五花八门&#xff0c;但是总也没系统地学习一下。一会儿看一小段&#xff0c;转眼就忘光了&#xff0c;只留下一个刚才我没有在玩耍的错觉。以上是无关紧要的忏悔。接下来主要记…

[html] H5播放的video视频,如何实现对视频截图?

[html] H5播放的video视频&#xff0c;如何实现对视频截图&#xff1f; <video controls src"./assets/demo.mp4" width"400" height"300" id"video">Sorry, your browser doesnt support embedded videos.</video><bu…

带有托管代码的InfoPath2007表单模版发布到SharePoint表单库(浏览器方式查看)

在本篇文章中,将与大家分享如何将一个带有托管代码(manage code)的InfoPath2007表单模版发布到SharePoint Server2007的表单库中&#xff0c;并使得最终用户可以通过浏览器方式访问。 1. 创建InfoPath表单模版 在这里&#xff0c;我们使用VSTO2005与InfoPath2007。生成…

cefsharp System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。...

解决办法 安装vc 2015 Redistributable 64位系统安装x64 如果还报错先装x64版本再装x86版本 https://files.cnblogs.com/files/xuejianxiyang/vc_redist.part1.rarhttps://files.cnblogs.com/files/xuejianxiyang/vc_redist.part2.rarhttps://files.cnblogs.com/files/xuejianx…

jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数

我不确定如何从SQL执行中获取受影响的行数.我喜欢这个&#xff1a;boolean isResultSet statement.execute(arbitrarySQLCommand);我可以从getUpdateCount()方法获取受影响的行数.这一切都很好.我遇到的问题是更新计数为零时.这可能意味着&#xff1a;>这是一个DML语句,但它…

[html] 前端需要注意哪些SEO?

[html] 前端需要注意哪些SEO? 合理的title&#xff0c;description&#xff0c;keyswords 搜索引擎对这三项的权重逐个减小&#xff0c;title 值强调重点即可&#xff0c;重要的关键词出现不要超过两次&#xff0c;而且要靠前。2 、不同页面的tilte要有所不同&#xff1b;desc…

html语言文本框的符号,如何将文本框中的值作为HTML字符串提交?

我正在使用react draft wysiwyg库,我希望文本框中输入的值是HTML字符串的形式。我的州:editorState: EditorState.createEmptyeditorState{this.state.editorState}toolbarClassName"toolbarClassName"wrapperClassName"wrapperClassName"editorClassName&…

7种常用p2p共享协议

一、Napster&#xff1a;第一个大型的&#xff1b;中央集中式&#xff1b;倒闭了&#xff1b;二、Gnutella和Gnutella2&#xff1a;开源的&#xff1b;第一个真正非中心的。Gnutella2是对Gnutella的改进和扩展。三、FastTrack&#xff1a;第一个客户端是KazaA。协议与Gnutella类…

c++中怎么数组内有用元素的个数_前端面试(算法篇) - 数组乱序

一、面试题问&#xff1a;有一个长度为 100 的数组&#xff0c;如何从中随机挑选 50 个元素&#xff0c;组成一个新的数组&#xff1f;答&#xff1a;这个...那个...emmmmmm问&#xff1a;那先不挑 50 个&#xff0c;就挑一个数&#xff0c;知道怎么做吗&#xff1f;答&#xf…

axios+Vant+vue+jq重构jq月经周期计算器源代码(兼容移动端)

我是歌谣 代码重构不易 公众号关注小歌谣 前言 网络上流行了一款jq生成月经计算器的代码 是这样的 实现效果如图所示 本次讲解就是说明如何用VantjqVue实现此代码的重构 先看一眼重构演示的效果 这个是可以直接进行接口调用的 首先我们看一眼目录结构 我们这边贴出我自己手…

html页面高度设为自动,html – CSS:响应式布局中的高度自动问题

没有固定的正确高度.如果我在css中设置固定高度,则在响应式布局中,图像将不会以正确的宽高比调整大小.主要问题是css根据src-attribute设置的图像计算自动高度和宽高比,而不是width-和height-attribute.因此,如果有一个有宽度和高度的真实图像,一切正常.但是如果有一个空白(这只…

MVC Controller与ActionResult的返回值

Action的要求• 必须是一个公有方法• 必须返回ActionResult类型• 必须是实例方法• 不能是范型方法• 没有标注NonActionAttribute• 不能被重载&#xff08;overload&#xff09; Controller 提供了众多的方法让我们返回各种类型的 ActionResult。 1. View最常用的一种&…

工作380-js判断是否为空

noNull(x) {if (x "" || x undefined || x null) {return false;}return true;}

html5外置样式表,HTML5移动端通用css详解

HTML5移动端通用css下面是common.css内容/*css初始化*//*清除内外边距*/body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td,img{margin: 0;padding: 0;border: medium none;}h1,h2,h3,h4,h5,h6{font-size: 100%…

LINUX下tar.gz包的安装方法

LINUX下tar.gz包的安装方法 在tar.gz的东西不多了&#xff5e;&#xff5e;&#xff5e;&#xff5e; &#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&…

工作381-兼容移动端头部

<meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0">

目前流行的微型计算机内存的配置为,全国计算机一级考试模拟试题

出国留学网计算机等级考试网为大家提供全国计算机一级考试模拟试题&#xff0c;更多计算机等级考试资讯请关注我们网站的更新!1)根据汉字国标GB2312-80的规定&#xff0c;二级次常用汉字个数是A) 3000个 B)7445个 C)3008个 D)3755个2)在下列字符中&#xff0c;其ASCII码值最小的…

insert 和 insertSelective的区别

使用逆向工程生成的代码做一个添加时通常都会给出两个答案&#xff0c;如题目想要增加一条数据会让你选择insert或者insertSelective 两者的区别在于如果选择insert 那么所有的字段都会添加一遍即使没有值 <insert id"insert" parameterType"com.ego.pojo.Tb…

事务处理

第13章 事务处理 事务处理是包含一个或多个任务的一组关联操作的提交或回滚操作。在事务执行的过程中&#xff0c;保证事务具有基本的ACID属性&#xff08;原子、一致性、隔离和持久性&#xff09;。.NET Framework的事务管理支持多种事务处理方式&#xff0c;包括显性事务和隐…

工作382-vant弹框不能直接用

this.$toast.success("当前所填项不能为空")