上周倒腾了下 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. python学习笔记(二)-字符串方法

    python的字符串内建函数: #====================常用方法=============================name = 'besttest' new_name = n ...

  2. 定要过python二级 第三套

    第一模块   基础操作(共三道题) 1. 安装python 包  我在c  盘打开  但是它给我安装到了d盘得  anaconda3 下面  关键是  我在c盘  打开python .exe   创建 ...

  3. mysql的一次意外

    打开navcat连接本地mysql数据库的时候说mysql服务无法连接,切换到cmd用命令行来启动报错,发生系统错误5,查看百度,需用管理员权限运行, 用管理员运行依旧不好使 C:\WINDOWS\s ...

  4. Linux命令行:free

                  total        used        free      shared  buff/cache   availableMem:           251G   ...

  5. apiserver源码分析——启动流程

    前言 apiserver是k8s控制面的一个组件,在众多组件中唯一一个对接etcd,对外暴露http服务的形式为k8s中各种资源提供增删改查等服务.它是RESTful风格,每个资源的URI都会形如 / ...

  6. C++学习笔记:08 多态性

    课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 多态性 具体的讲,在面向对象程序设计中,指同样的方法被不同对象执行时会有不同的执行效果. 多态的实现 绑定机制 绑定是将一个标 ...

  7. ping探测与Nmap扫描

    一.实验目的 学习信息收集的一般步骤 学会使用ping命令 利用Nmap工具进行信息搜集 二.实验环境 系统环境:一台windows7系统.一台XP系统.一台kali系统 软件环境:安装Wiresha ...

  8. mysql-router-MIC-8.0.26集群部署

    1.具体部署详情请看视频 https://space.bilibili.com/677825194 2.mysql主要配置如下 cat > /etc/my.cnf <<EOF [cl ...

  9. git 修改最后一次提交

    git 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,可以运行带有 --amend 选项的提交命令来重新提交:git commit --amend -m ...

  10. ubuntu16.04安装klee

    ubuntu16.04安装klee(基于llvm 3.8)教程 前言 查阅了很多资料,踩了不少的坑,总的来说,这个应该是比较完善的基于llvm3.8和ubuntu16.04的安装教程,至少我自己按照这 ...