上周倒腾了下 javafx,本来是做平时成绩系统。跟老师提了一下 javafx,他突然兴起,发了个统计中文和英文单词并以直方图显示的实验......只给两三天的期限,笑着说考验我们的潜力SOS,于是带着组里一共三人花了一天半时间做了下来。

主要界面如下

没选文本时,如果没勾选完就点开始分析会显示提示

分析文本文档

只有一个功能,就是选择本地 .txt 文件,选择文本语言和最低频次,然后显示直方图统计结果。

试了下大的 .txt 文档,超出界面后面的就无法显示,x轴和柱形条对不齐,还没改这个bug,目前想着是添加拉条,但感觉看起来也不方便。



更希望能做成水平直方图,貌似 javafx 封装的 BarChart 把 x 轴和 y 轴能放的数据类型固定了。在 Youtube 看到有自己封装BarChart,很不错!(plus 上面好多javafx UI 界面也很绝!

因为时间很紧急,然后也是初学,代码惨不忍睹,Java 功底不扎实,Javafx 控件使用也一知半解。放些主要功能的实现代码

筛选出中英文都用的正则表达式!!! 只是对英文那个 's 会有问题,因为 ' 那也分割了,暂时不知道怎么改,下面是代码

public static void Analysis(String flag) throws IOException
{
int bufferSize = 20 * 1024 * 1024;
File file = new File(AnalysisFile);
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
InputStreamReader inputStreamReader = new InputStreamReader(bufferedInputStream);
BufferedReader input = new BufferedReader(inputStreamReader, bufferSize);
String line;
while((line = input.readLine()) != null) {
if(flag == "英文") { // Combox 那选择中英文带过来的参数 flag
String[] str = line.split("\\W"); // 使用正则表达式以非字母,数字,下划线的符号分割
for(String e : str) {
if(e.matches("[a-z]+")) { // 筛选出英文单词
if(sumOfWords.containsKey(e)) {
int num = sumOfWords.get(e);
sumOfWords.put(e, num + 1);
}
else sumOfWords.put(e, 1);
}
}
}
else if(flag == "中文") {
String d;
char[] charArray = line.toCharArray(); //将字符串转换为字符数组
for(int x = 0;x < charArray.length;x++) { //循环遍历字符数组
d=Character.toString(charArray[x]); //返回一个字符串对象
if (d.matches("[\\u4e00-\\u9fa5]")) {//判断是否为汉字
if(!sumOfChinese.containsKey(charArray[x])) {
sumOfChinese.put(charArray[x], 1);
} else {
sumOfChinese.put(charArray[x],sumOfChinese.get(charArray[x])+1);
}
}
}
}
}
input.close();

点击选择文件时,打开本地文件选择器的代码

    @FXML
void choosefile(ActionEvent event) {
Stage primaryStage = new Stage();
FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(primaryStage);
if(file != null) {
FileInputField.setText(file.getAbsolutePath());
AnalysisFile = String.valueOf(file);
TipLabel.setText("");
}
}

最后提交前本来想打包成 .exe 文件,控制台用jdk里packager打包出现乱码,解决过程中想到,这是个仍有bug并且没什么作用的工具,随即放弃打包。之后有时间重新写一下,修正 bug 后加些功能就会上传到 github,组里取名Useless Tool,所以只能说供初学者参考了

12月份还得交学生平时成绩管理系统那个项目,比较麻烦,三种参与者,十个活动。设计数据库都想了好久(数据库还没看到设计那章,只能自己瞎设计。这个项目做下来也会上传!在这之前还需要多看看java和数据库,规范下类的设计和数据库设计,不至于代码写的:/自己都不想再看第二眼

Javafx-【直方图】文本频次统计工具 中文/英文单词统计的更多相关文章

  1. Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...

  2. python 练习(一)代码统计工具的实现

    最近部门成立了一个python学习小组,旨在让大家在做项目中开始成长起来,于是老大就给布置了第一个小任务:代码统计工具,具体的需求如下: 需求: . 能够统计指定目录下C++程序的代码行数. . C+ ...

  3. APP store 官方统计工具的常见的Q&A

    Apple最近在iTunesConnect里最新发布了官方统计工具,提供了现有友盟统计平台和自有统计平台无法统计的数据,具有自己的独有特点,尤其是下面几个最让人头疼的流量分析转化,可以在App Ana ...

  4. Python中文词频统计

    以下是关于小说的中文词频统计 这里有三个文件,分别为novel.txt.punctuation.txt.meaningless.txt. 这三个是小说文本.特殊符号和无意义词 Python代码统计词频 ...

  5. Python实现代码统计工具——终极加速篇

    Python实现代码统计工具--终极加速篇 声明 本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对 ...

  6. Python实现C代码统计工具(四)

    目录 Python实现C代码统计工具(四) 标签: Python 计时 持久化 声明 运行测试环境 一. 自定义计时函数 1.1 整个程序计时 1.2 代码片段计时 1.3 单条语句计时 二. 性能优 ...

  7. Python实现C代码统计工具(二)

    目录 Python实现C代码统计工具(二) 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python实现C代码统计工具(二) 标签: Python 代码统计 声明 本文将对<Pytho ...

  8. 初学Hadoop之中文词频统计

    1.安装eclipse 准备 eclipse-dsl-luna-SR2-linux-gtk-x86_64.tar.gz 安装 1.解压文件. 2.创建图标. ln -s /opt/eclipse/ec ...

  9. 基于COCA词频表的文本词汇分布测试工具v0.1

    美国语言协会对美国人日常使用的英语单词做了一份详细的统计,按照日常使用的频率做成了一张表,称为COCA词频表.排名越低的单词使用频率越高,该表可以用来统计词汇量. 如果你的词汇量约为6000,那么这张 ...

随机推荐

  1. CI框架 ::集成极光推送

    分三步 1:引入类: 2:新建Jpush类: 3:修改源码(PHP5.3.3环境)

  2. lua常用一些功能

    lua在openresty中获取请求的请求头 local head_table = ngx.req.get_headers() 由于table类型,无法直接使用ngx.say()显示,需要转换为cjs ...

  3. P4320-道路相遇,P5058-[ZJOI2004]嗅探器【圆方树,LCA】

    两题差不多就一起写了 P4320-道路相遇 题目链接:https://www.luogu.com.cn/problem/P4320 题目大意 \(n\)个点\(m\)条边的一张图,\(q\)次询问两个 ...

  4. ServerManager.exe 0xc0000135 应用程序错误(Windows Server 2016、2019)

    前言 将 Windows Server 2019或2016 .NET Framework移除. IIS卸载后,服务器管理器.控制面板部分功能.事件查看器等都无法正常开启. 解决办法 打开CMD,输入D ...

  5. 踩坑系列《六》Spring增加事务处理遇到异常解决办法

    当在对数据进行增删改操作时,需要用到事务的处理,所以在业务层中加入@Transactional注解,但是在执行业务操作的前面遇到异常,因此对异常进行抛出,但是数据又诡异地成功保存到数据库了. 解决方法 ...

  6. caffe运行错误 target_blobs.blobs_size()与 source_layer.blobs_size() 不一致

    解决方法参考:http://blog.csdn.net/zhangla1220/article/details/50697352 感谢博主!!! 最新下载的caffe代码,运行mnist,训练时可以正 ...

  7. 【nvidia jetson xavier】 Deepstream Yolov3示例模型运行

    作者声明 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 原文链接:https://www.cnblogs.com/phoenixash/p/15 ...

  8. .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务

    前面对于分布式事务也讲了好几篇了(可靠消息最终一致性 分布式事务 - TCC 分布式事务 - 2PC.3PC),但是还没有实战过.那么本篇我们就来演示下如何在 .NET 环境下实现一个基于可靠消息的分 ...

  9. AT3950 [AGC022E] Median Replace

    题目传送门 Description 有一个长度为 \(n\) 的 \(01\) 串,里面有一些还没有确定,我们标记为 ? .可以进行若干次操作,每次操作可以把三个相邻的数替换成它们的中位数.问有多少种 ...

  10. 【UE4 C++ 基础知识】<1> UPROPERTY宏、属性说明符、元数据说明符

    属性声明 属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符. UPROPERTY([specifier, specifier, ...], [meta(key= ...